欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java線程(Thread)四種停止方式代碼實(shí)例

 更新時(shí)間:2020年03月09日 13:20:18   作者:李小千  
這篇文章主要介紹了Java線程(Thread)四種停止方式代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

1.正常的程序啟動(dòng),停止

2.使用退出標(biāo)記,一般程序在run()方法后,線程會(huì)正常結(jié)束。

但是有一些伺服線程還在運(yùn)行,他們運(yùn)行時(shí)間較長,只有當(dāng)外部條件滿足時(shí),他們才會(huì)停止。實(shí)現(xiàn)如下:

public class ThreadCease extends Thread{
  private volatile boolean exit = false;
  public void run(){
   while(!exit){
    //停止后做的事情~
   }
}

3.使用線程(Thread)自帶的isInterrupted()方法來結(jié)束線程。實(shí)現(xiàn)如下:

public class ThreadCease1 extends Thread{
  public void run(){
   while(!isInterrupted()){
    try{
      Thread.sleep(3000);
     }catch(Exception e){
      e.printStackTrace();
      break;
      }
   }
  }
}

注意:使用interrupted()方法來中斷線程有兩種情況:

3.1.1 線程處于阻塞狀態(tài),如線程中使用了sleep(),同步鎖 wait(),socket的receiver,accept方法時(shí),會(huì)使線程進(jìn)入到阻塞狀態(tài),當(dāng)程序調(diào)用interrupted()方法時(shí),會(huì)拋出InterrupteException異常。阻塞中的那個(gè)方法拋出異常,通過捕獲該異常,然后break跳出循環(huán),從而結(jié)束該線程。注:不是調(diào)用了interrupted()方法就會(huì)結(jié)束線程,是捕獲到了interruptedException異常后,break 跳出循環(huán)后才能結(jié)束此線程。

3.1.2 線程未處于阻塞狀態(tài),調(diào)用interrupted()方法時(shí),實(shí)際上是通過判斷線程的中斷標(biāo)記來退出循環(huán)。

4.stop()方法停止

Thread.stop()方法來結(jié)束線程的運(yùn)行,但是很危險(xiǎn),一般不建議使用stop()來停止線程;不安全的原因主要有:在程序調(diào)用Thread.stop()后會(huì)拋出ThreadDeatherror()錯(cuò)誤。并釋放子線程所持有的所有鎖,會(huì)導(dǎo)致被保護(hù)數(shù)據(jù)呈現(xiàn)不一致性,此過程不可控。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解如何在Java中實(shí)現(xiàn)懶加載

    詳解如何在Java中實(shí)現(xiàn)懶加載

    懶加載是一種常見的優(yōu)化技術(shù),它可以延遲對(duì)象的創(chuàng)建或初始化,直到對(duì)象第一次被使用時(shí)才進(jìn)行。在本文中,我們將介紹如何使用?Java?中的?Supplier?接口和雙重檢查鎖定模式來實(shí)現(xiàn)懶加載,并保證只初始化一次,希望對(duì)大家有所幫助
    2023-03-03
  • 關(guān)于@Value取值為NULL的解決方案

    關(guān)于@Value取值為NULL的解決方案

    這篇文章主要介紹了關(guān)于@Value取值為NULL的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • JVM知識(shí)總結(jié)之垃圾收集算法

    JVM知識(shí)總結(jié)之垃圾收集算法

    本博客為讀書筆記,讀的是《深入理解Java虛擬機(jī)》一書,在看這個(gè)書的時(shí)候,最大的一個(gè)感受便是“當(dāng)初怎么就沒有好好學(xué)習(xí)操作系統(tǒng)呢,不然也不會(huì)有這么多看的云里霧里的地方了”,不過那都是過去的事了,學(xué)習(xí)最好的時(shí)刻便是現(xiàn)在,需要的朋友可以參考下
    2021-06-06
  • Java?BitMap源碼仿寫實(shí)現(xiàn)

    Java?BitMap源碼仿寫實(shí)現(xiàn)

    這篇文章主要介紹了Java?BitMap源碼仿寫實(shí)現(xiàn),所謂bitmap,就是用每一位來存放某種狀態(tài),適用于大規(guī)模數(shù)據(jù),但數(shù)據(jù)狀態(tài)又不是很多的情況。通常是用來判斷某個(gè)數(shù)據(jù)存不存在的
    2022-12-12
  • Java設(shè)計(jì)模式中的簡單工廠模式解析

    Java設(shè)計(jì)模式中的簡單工廠模式解析

    這篇文章主要介紹了Java設(shè)計(jì)模式中的簡單工廠模式解析,簡單工廠模式提供一個(gè)創(chuàng)建對(duì)象實(shí)例的功能,而無須關(guān)心其具體實(shí)現(xiàn),被創(chuàng)建實(shí)例的類型可以是接口、抽象類,也可以是具體的類,需要的朋友可以參考下
    2023-11-11
  • spring-boot-maven-plugin:打包時(shí)排除provided依賴問題

    spring-boot-maven-plugin:打包時(shí)排除provided依賴問題

    這篇文章主要介紹了spring-boot-maven-plugin:打包時(shí)排除provided依賴問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • spring boot+vue 的前后端分離與合并方案實(shí)例詳解

    spring boot+vue 的前后端分離與合并方案實(shí)例詳解

    這篇文章主要介紹了spring boot+vue 的前后端分離與合并方案實(shí)例詳解,需要的朋友可以參考下
    2017-11-11
  • java常用工具類之?dāng)?shù)據(jù)庫連接類(可以連接多種數(shù)據(jù)庫)

    java常用工具類之?dāng)?shù)據(jù)庫連接類(可以連接多種數(shù)據(jù)庫)

    這篇文章主要介紹了java常用工具類之?dāng)?shù)據(jù)庫連接類,可以連接多種數(shù)據(jù)庫,代碼中包含詳細(xì)注釋,需要的朋友可以參考下
    2014-07-07
  • IDEA 中 30 秒創(chuàng)建一個(gè) Spring Cloud Alibaba 工程

    IDEA 中 30 秒創(chuàng)建一個(gè) Spring Cloud Alibaba 工程

    這篇文章主要介紹了IDEA 中 30 秒生成 Spring Cloud Alibaba 工程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì)對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 猜數(shù)游戲java實(shí)現(xiàn)代碼

    猜數(shù)游戲java實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)猜數(shù)游戲代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12

最新評(píng)論