1、自然退出:run()执行完之后自动退出,这种行为是可预测的。当然这也是最好得方式。 2、强制退出:传统方式是使用suspend()和resume()来暂停或者恢复线程,或者最后的选择使用stop()来结束线程。但是在实际中都不会使用这三个方式,因为它们操作线程时,根本不知道线程的内部状态,这样会导致不可预知的情况发生,所以不...
在第一种情况下使用interrupt方法,sleep方法将抛出一个InterruptedException例外,而在第二种情况下线程将直接退出。下面的代码演示了在第一种情况下使用interrupt方法。 package chapter2; public class ThreadInterrupt extends Thread { public void run() { try { sleep(50000); // 延迟50秒 } catch (InterruptedExc...
51CTO博客已为您找到关于如何优雅的退出多线程 java的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及如何优雅的退出多线程 java问答内容。更多如何优雅的退出多线程 java相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和进步。
advanceRunState(int)方法的整体逻辑就是:判断当前线程池的状态是否为指定的状态,在shutdown()方法中传递的状态是SHUTDOWN,如果是SHUTDOWN,则直接返回;如果不是SHUTDOWN,则将当前线程池的状态设置为SHUTDOWN。 接下来,我们看看showdown()方法调用的interruptIdleWorkers()方法,如下所示。 private void interruptIdleWorke...
在java中有以下3种方法可以终止正在运行的线程: 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。 使用stop方法强行终止,但是不推荐这个方法,因为stop和suspend及resume一样都是过期作废的方法。 使用interrupt方法中断线程。
这种退出方式,是告知线程 “你应该在合适时机退出”, 由线程自己选择在合适的时机检查该状态。那么开发者在设计任务代码时,就要提前设计 合理的退出点,在退出点检查是否需要退出。 Thread.interrupt() JDK 中提到了如果目标线程没有处于运行态,而是处于阻塞状态,自然无法检查退出的状态标记,如何通知这个线程退出呢?
stop强制退出(十分不推荐) 记住,线程的终止,并不是简单的调用 stop 命令去。虽然 api 仍然可以调用,但是和其他的线程控制方法如 suspend、resume 一样都是过期了的不建议使用,就拿stop 来说,stop 方法在结束一个线程时并不会保证线程的资源正常释放,因此会导致程序可能出现一些不确定的状态。(参考如何优雅的"中断...
在Java中,线程池可以通过两种方式来退出程序,分别是正常关闭和强制关闭。正常关闭:通过调用线程池的shut...
1 第一种方法也是很多常用的方法,但不是推荐的方式使用标志位,static变量来退出JAVA线程,这样很不实时,尤其那些处于阻塞中的线程,比如Thread.sleep(10000); 休眠10等回来查看的时候都发现早变了。2 第二种方法 使用stopdestroy方法来终止线程,这方法在新的版本SDK居然直接报错,好像SUN不支持这个方法了。那就...
1、捕获程序销毁事件如下方法 2、在线程的方法中来捕获线程的中断异常,从而实现线程运行的结束 3、结束线程实现逻辑 通过捕获程序运行的销毁事件,产生一个线程中断信号,在线程的执行方法中通过sleep(10)休眠来触发线程中断异常的产生,从而退出线程循环,以达到结束线程的目的。