java安全停止線程的方法詳解
Thread.stop()是一個被廢棄的方法,不被推薦使用的原因是stop方法太過于暴力,強(qiáng)行把執(zhí)行到一半的線程終止,并且會立即釋放這個線程所有的鎖。會破壞了線程中引用對象的一致性。
使用判斷標(biāo)志位的方法中斷線程
- interrupt() //線程中斷 (標(biāo)志位設(shè)置為true)
- isInterrupted() //判斷是否被中斷
- interrupted() //判斷是否中斷,并清除當(dāng)前中斷狀態(tài)(標(biāo)志位改為false)
public static class TestThread extends Thread{
public TestThread(String name){
super(name);
}
@Override
public void run() {
String threadName=Thread.currentThread().getName();
while (!isInterrupted()){ //Runnable中用 Thread.currentThread().isInterruputed
System.out.println(threadName+" is run");
}
System.out.println(threadName+" flag is "+isInterrupted());
}
}
public static void main(String[] args) throws InterruptedException {
Thread testThread=new TestThread("test");
testThread.start();
Thread.sleep(2000);
testThread.interrupt();
}
當(dāng)拋出 InterruptedException 異常,線程中斷標(biāo)志位會被復(fù)位 false, 線程不會正常中斷 ,需要手動中斷interrupt()

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Spring?Boot自定義?Starter并推送到遠(yuǎn)端公服的詳細(xì)代碼
這篇文章主要介紹了Spring?Boot自定義?Starter并推送到遠(yuǎn)端公服,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-09-09
eclipse創(chuàng)建一個基于maven的web項目詳細(xì)步驟
開始學(xué)習(xí)maven,并用maven創(chuàng)建了第一個屬于自己的web項目,下面這篇文章主要給大家介紹了關(guān)于eclipse創(chuàng)建一個基于maven的web項目的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12
Docker 解決openjdk容器里無法使用JDK的jmap等命令問題
這篇文章主要介紹了Docker 解決openjdk容器里無法使用JDK的jmap等命令問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
springboot DTO字符字段與日期字段的轉(zhuǎn)換問題
這篇文章主要介紹了springboot DTO字符字段與日期字段的轉(zhuǎn)換問題,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07
Java實(shí)現(xiàn)樹形結(jié)構(gòu)管理的組合設(shè)計模式
Java組合模式是一種結(jié)構(gòu)型設(shè)計模式,它允許將對象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。組合模式使得用戶可以使用統(tǒng)一的方式處理單個對象和對象組合,從而簡化了系統(tǒng)的設(shè)計和維護(hù)2023-04-04
Spring Boot 定制與優(yōu)化內(nèi)置的Tomcat容器實(shí)例詳解
本文主要記錄對內(nèi)置容器優(yōu)化和定制的方式,用于自己加深對SpringBoot理解。本文給大家介紹的非常詳細(xì),具有參考借鑒價值,需要的朋友參考下吧2017-12-12

