子线程杀掉主线程

简介: 子线程杀掉主线程

如果线程执行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 + "]";
        }
    }
}
目录
相关文章
|
6月前
|
存储 Unix 程序员
进程与线程(二)线程相关
进程与线程(二)线程相关
60 1
|
9月前
|
Java Unix 调度
终于把进程和线程学会了
终于把进程和线程学会了
71 0
|
4月前
|
消息中间件 并行计算 安全
进程、线程、协程
【10月更文挑战第16天】进程、线程和协程是计算机程序执行的三种基本形式。进程是操作系统资源分配和调度的基本单位,具有独立的内存空间,稳定性高但资源消耗大。线程是进程内的执行单元,共享内存,轻量级且并发性好,但同步复杂。协程是用户态的轻量级调度单位,适用于高并发和IO密集型任务,资源消耗最小,但不支持多核并行。
73 1
|
4月前
|
存储 消息中间件 人工智能
进程,线程,协程 - 你了解多少?
本故事采用简洁明了的对话方式,尽洪荒之力让你在轻松无负担的氛围中,稍微深入地理解进程、线程和协程的相关原理知识
57 2
进程,线程,协程 - 你了解多少?
|
6月前
|
存储 Java 编译器
进程和线程
进程和线程
122 25
|
9月前
|
Shell Linux 调度
进程与线程
进程与线程
45 1
|
消息中间件 调度
线程和进程
线程和进程
37 0
|
编译器
主线程退出对子线程影响
主线程退出对子线程影响
161 0
|
算法 Java 调度
线程的挂起和唤醒
线程的挂起和唤醒
|
存储 并行计算 安全
线程,进程,协程
线程,进程,协程
116 0