亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java多線程編程安全退出線程方法介紹

 更新時間:2017年10月23日 11:45:10   作者:Zzrdark_的博客  
這篇文章主要介紹了Java多線程編程安全退出線程方法介紹,具有一定參考價值,需要的朋友可以了解下。

線程停止

Thread提供了一個stop()方法,但是stop()方法是一個被廢棄的方法。為什么stop()方法被廢棄而不被使用呢?原因是stop()方法太過于暴力,會強行把執(zhí)行一半的線程終止。這樣會就不會保證線程的資源正確釋放,通常是沒有給與線程完成資源釋放工作的機會,因此會導(dǎo)致程序工作在不確定的狀態(tài)下

那我們該使用什么來停止線程呢

Thread.interrupt(),我們可以用他來停止線程,他是安全的,可是使用他的時候并不會真的停止了線程,只是會給線程打上了一個記號,至于這個記號有什么用呢我們可以這樣來用。

public class Mythread extends Thread{
 public void run(){
  super.run();
  for(int i =0 ;i<50000;i++){
   if(this.interrupted()){
    System.out.println("停止");
    break;
   }
  }
  System.out.println("i="+(i+1));
 }
}
public class Run{
 try{
  MyThread thread = new MyThread();
  thread.start();
  thread.sleep(1000);
  thread.interrupt(); //打上標(biāo)記
 }catch(Exception e){
  System.out.println("main");
  e.printStackTrace();
 }
 System.out.println("end!")
}

雖然這樣就會停止下來 ,可是For后面的語句還是會執(zhí)行。

異常法 退出線程

public class Mythread extends Thread{
 public void run(){
  super.run();
  try{
   for(int i =0 ;i<50000;i++){
    if(this.interrupted()){
     System.out.println("停止");
     throw new Exception();
    }
   }
   System.out.println("i="+(i+1));
  }catch(Exception e){
   System.out.println("拋出異常了");
   e.printStackTrace();
  }
 }
}

解釋 如果當(dāng)我們打上了一個標(biāo)記我們就可以檢測到已經(jīng)打上的時候就返回個true,進入if里面返回了一個異常 這樣就終止了。這樣做使的線程可以在我們可控的范圍里停止

用什么方法去看什么狀態(tài)呢

this.interrupted():看看當(dāng)前線程是否是中斷狀態(tài),執(zhí)行后講狀態(tài)表示改為false this.isInterrupeted():看看線程對象是否已經(jīng)是中斷狀態(tài),但是不清除中斷狀態(tài)標(biāo)記。

總結(jié)

以上就是本文關(guān)于Java多線程編程安全退出線程方法介紹的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:淺談Java多線程處理中Future的妙用(附源碼)Java多線程ForkJoinPool實例詳解等,有什么問題可以隨時留言,小編會及時回復(fù)大家的。下面推薦本站兩本關(guān)于Java編程的書籍,供參考:

Java經(jīng)典實例(第三版) 完整版 ([美]達(dá)爾文) 中文pdf掃描版

http://chabaoo.cn/books/577859.html

Java軟件結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)(第4版) (John Lewis) 中文pdf掃描版

http://chabaoo.cn/books/568505.html

希望對大家有所幫助!

相關(guān)文章

  • js實現(xiàn)拖拽拼圖游戲

    js實現(xiàn)拖拽拼圖游戲

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)拖拽拼圖游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Java實現(xiàn)貪吃蛇游戲的示例代碼

    Java實現(xiàn)貪吃蛇游戲的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用Java實現(xiàn)簡單的貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • 詳解Java中的Lambda表達(dá)式

    詳解Java中的Lambda表達(dá)式

    Lambda表達(dá)式是Java SE 8中一個重要的新特性。這篇文章主要介紹了Java中的Lambda表達(dá)式 ,需要的朋友可以參考下
    2019-04-04
  • 解決Callable的對象中,用@Autowired注入別的對象失敗問題

    解決Callable的對象中,用@Autowired注入別的對象失敗問題

    這篇文章主要介紹了解決Callable的對象中,用@Autowired注入別的對象失敗問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • springboot項目配置logback-spring.xml實現(xiàn)按日期歸檔日志的方法

    springboot項目配置logback-spring.xml實現(xiàn)按日期歸檔日志的方法

    本文主要介紹了springboot項目配置logback-spring.xml實現(xiàn)按日期歸檔日志的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • mybatis-plus3.4.0邏輯刪除報錯的解決

    mybatis-plus3.4.0邏輯刪除報錯的解決

    這篇文章主要介紹了mybatis-plus3.4.0邏輯刪除報錯的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Idea中如何調(diào)出Run dashboard 或services窗口

    Idea中如何調(diào)出Run dashboard 或services窗口

    這篇文章主要介紹了Idea中如何調(diào)出Run dashboard 或services窗口問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Java中HashMap和HashTable區(qū)別

    Java中HashMap和HashTable區(qū)別

    HashMap和Hashtable都是Java常見的基于哈希表實現(xiàn)的Map接口的實現(xiàn)類,本文主要介紹了Java中HashMap和HashTable區(qū)別,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • Java獲取當(dāng)前時間方法總結(jié)

    Java獲取當(dāng)前時間方法總結(jié)

    本篇文章給大家整理了關(guān)于Java獲取當(dāng)前時間方法,以及相關(guān)代碼分享,有需要的朋友測試參考下吧。
    2018-02-02
  • 解決cmd運行java程序“找不到文件”提示的方案

    解決cmd運行java程序“找不到文件”提示的方案

    在本篇文章里小編給大家分享的是關(guān)于解決cmd運行java程序“找不到文件”提示的方案,有需要的朋友們可以參考下。
    2020-02-02

最新評論