我是一个从汽车行业转行IT的项目经理,我是Edward,如想了解更多,请关注我的公众号【转行项目经理的逆袭之路】。线程本质上执行结束就会自动关闭,因此,其实在业务当中也很少出现关闭线程的操作,但是如果想要在线程running的状态下结束线程,该怎么做呢?下面提供四种方法实现:
interrupt()中止阻塞状态实现
下面这个程序模拟的是主线程任务完毕,同时中止t线程的场景。
这个方法需要被中止线程中存在阻塞状态,利用try…catch…的机制来实现中止,中止的时间点相对灵活,可以用return强行中止任务,也可以不return让,让线程将任务执行完。
/**
* 停止线程 interrupt()中止阻塞状态实现
* @author EP
* @date 2020年5月1日
* @version 1.0
*/
public class StopThreadDemo2 {
public static void main(String[] args) {
Thread t = new Thread(()->{
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
System.err.println(Thread.currentThread().getName()+" is terminated");
//return;
}
System.err.println("thread t end");
});
t.start();
try {
Thread.sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.