子线程杀掉主线程

简介: 子线程杀掉主线程

如果线程执行N久还没结束,就想把它杀掉,把线程留给其它任务使用。

思路:主线程执行时,开一个子线程来监控它,看是否执行完成。如果没有执行完成就把它干了,执行完了就不管。

package com.vipsoft.Thread;
public class ThreadMain {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i++) {
            Thread mainT = Thread.currentThread();
            String threadName = "Thread-" + i;
            SubThread st = new SubThread(threadName, mainT);
            Thread thread = new Thread(st);
            thread.start();
            try {
                System.out.println("主线程,开始 " + threadName);
                Thread.sleep(i * 1000);
                st.setDone();
                System.out.println("主线程,执行完成 " + threadName);
            } catch (InterruptedException e) {
                System.out.println("主线程,被打断 " + threadName);
            }
        }
    }
    static class SubThread implements Runnable {
        private String name;
        private Thread mainT;
        //如果完成了就不用杀了。
        private boolean isDone;
        public void setDone() {
            isDone = true;
        }
        public SubThread(String name, Thread mainT) {
            this.name = name;
            this.mainT = mainT;
        }
        @Override
        public void run() {
            try {
                System.out.println("子线程,正在监控主进程 " + name);
                Thread.sleep(2000);
                //时间到了,主线程还没有完成就干掉。
                if (!isDone) {
                    mainT.interrupt();
                    System.out.println("子线程,干掉了主进程(超时了) " + name);
                }
            } catch (InterruptedException e) {
                System.out.println("子线程,被打断");
                return;
            }
        }
        @Override
        public String toString() {
            return "MyTask [name=" + this.name + "]";
        }
    }
}
目录
相关文章
|
5月前
|
存储 Unix 程序员
进程与线程(二)线程相关
进程与线程(二)线程相关
52 1
|
7月前
|
存储 网络协议 算法
【进程与线程】最好懂的讲解
【进程与线程】最好懂的讲解
77 1
|
5月前
|
存储 Java 编译器
进程和线程
进程和线程
117 25
|
8月前
|
Java 调度 Windows
进程与线程应用
进程与线程应用
35 2
|
8月前
关于子线程被打断执行的问题
关于子线程被打断执行的问题
|
Java 开发者
停止线程 & 守护线程 & 线程阻塞
停止线程 & 守护线程 & 线程阻塞
31 0
停止线程 & 守护线程 & 线程阻塞
|
编译器
主线程退出对子线程影响
主线程退出对子线程影响
146 0
|
存储 C语言 C++
进程与线程
在我们刚开始学C语言程序设计的时候,都是单线程的,实际上我们用的电脑都是多线程的。这里说的多线程包含了并行和并发。
|
消息中间件 Java 调度
什么是线程,进程?
什么是线程,进程?
146 0
|
Java 调度 Windows
线程和进程
在Java语言里面最大的特点是支持多线程的开发。那么用了多线程就必须了解线程和进程
108 0
线程和进程