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

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

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

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

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

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

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

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

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

注意:使用interrupted()方法來(lái)中斷線(xiàn)程有兩種情況:

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

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

4.stop()方法停止

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

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

相關(guān)文章

  • 淺談SpringCloud之zuul源碼解析

    淺談SpringCloud之zuul源碼解析

    這篇文章主要介紹了淺談SpringCloud之zuul源碼解析,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • SpringBoot實(shí)現(xiàn)application配置信息加密

    SpringBoot實(shí)現(xiàn)application配置信息加密

    在配置文件中,我們有開(kāi)發(fā)環(huán)境配置和生產(chǎn)環(huán)境配置,而生產(chǎn)環(huán)境的配置信息是需要做好防護(hù)的,避免外泄,所以本文為大家整理了application配置信息加密的方法,需要的可以參考下
    2023-07-07
  • 手把手教你寫(xiě)一個(gè)SpringBoot+gRPC服務(wù)

    手把手教你寫(xiě)一個(gè)SpringBoot+gRPC服務(wù)

    本文將在本地環(huán)境下搭建gRPC客戶(hù)端和服務(wù)端,并成功建立通訊發(fā)送消息的方式,從而幫助大家深入了解gRPC在Spring Boot項(xiàng)目中的應(yīng)用,有需要的小伙伴可以參考下
    2023-12-12
  • SpringBoot線(xiàn)程池ThreadPoolTaskExecutor異步處理百萬(wàn)級(jí)數(shù)據(jù)

    SpringBoot線(xiàn)程池ThreadPoolTaskExecutor異步處理百萬(wàn)級(jí)數(shù)據(jù)

    本文主要介紹了SpringBoot線(xiàn)程池ThreadPoolTaskExecutor異步處理百萬(wàn)級(jí)數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03
  • Java+Selenium實(shí)現(xiàn)控制瀏覽器的啟動(dòng)選項(xiàng)Options

    Java+Selenium實(shí)現(xiàn)控制瀏覽器的啟動(dòng)選項(xiàng)Options

    這篇文章主要為大家詳細(xì)介紹了如何使用java代碼利用selenium控制瀏覽器的啟動(dòng)選項(xiàng)Options的代碼操作,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2023-01-01
  • Spring注解@RestControllerAdvice原理解析

    Spring注解@RestControllerAdvice原理解析

    這篇文章主要介紹了Spring注解@RestControllerAdvice原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Java操作MinIO實(shí)現(xiàn)文件的上傳和刪除

    Java操作MinIO實(shí)現(xiàn)文件的上傳和刪除

    本文主要介紹如何將本地Java項(xiàng)目resources目錄下的一個(gè)PNG圖片上傳到MinIO,然后將上傳的圖片刪除,文中有詳細(xì)的流程步驟和示例代碼,需要的朋友可以參考下
    2023-06-06
  • Java圖形界面超實(shí)用使用教程

    Java圖形界面超實(shí)用使用教程

    在Java編程中圖形界面應(yīng)用程序是非常常見(jiàn)和重要的一部分,下面這篇文章主要給大家介紹了關(guān)于Java圖形界面的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • Java利用Guava?Retry實(shí)現(xiàn)重處理

    Java利用Guava?Retry實(shí)現(xiàn)重處理

    guava-retrying是谷歌的Guava庫(kù)的一個(gè)小擴(kuò)展,允許為任意函數(shù)調(diào)用創(chuàng)建可配置的重試策略,比如與正常運(yùn)行時(shí)間不穩(wěn)定的遠(yuǎn)程服務(wù)對(duì)話(huà)的函數(shù)調(diào)用。本文將利用其實(shí)現(xiàn)重處理,感興趣的可以了解一下
    2022-08-08
  • java實(shí)現(xiàn)系統(tǒng)托盤(pán)示例

    java實(shí)現(xiàn)系統(tǒng)托盤(pán)示例

    桌面的系統(tǒng)托盤(pán)即當(dāng)程序最小化或者關(guān)閉按鈕程序并沒(méi)有退出,而是最小化在任務(wù)狀態(tài)區(qū)域,下面是使用java實(shí)現(xiàn)系統(tǒng)托盤(pán)示例
    2014-03-03

最新評(píng)論