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

JAVA中 終止線程的方法介紹

 更新時間:2013年03月04日 14:51:38   作者:  
JAVA中 終止線程的方法介紹,需要的朋友可以參考一下

在Java的多線程編程中,java.lang.Thread類型包含了一些列的方法start(), stop(), stop(Throwable) and suspend(), destroy() and resume()。通過這些方法,我們可以對線程進行方便的操作,但是這些方法中,只有start()方法得到了保留。

在Sun公司的一篇文章《Why are Thread.stop, Thread.suspend and Thread.resume Deprecated? 》中詳細講解了舍棄這些方法的原因。

如果真的需要終止一個線程,可以使用以下幾種方法:
1、讓線程的run()方法執(zhí)行完,線程自然結(jié)束。(這種方法最好)


2、通過輪詢和共享標志位的方法來結(jié)束線程,例如while(flag){},flag的初始值設為真,當需要結(jié)束時,將flag的值設為false。(這種方法也不很好,因為如果while(flag){}方法阻塞了,則flag會失效)


復制代碼 代碼如下:

public class SomeThread implements Runnable {

private volatile boolean stop = false;

public void terminate() {

stop = ture;

}

public void run() {

while(stop) {

// ... some statements

}

}

}


 

如果線程因為執(zhí)行sleep()或是wait()而進入Not Runnable狀態(tài),假如是wait() 用標志位就方法就不行了,

public final void wait(long timeout)
                throws InterruptedException此方法導致當前線程(稱之為 T)將其自身放置在對象的等待集中,然后放棄此對象上的所有同步要求。即當前線程變?yōu)榈却隣顟B(tài)

wait() 的標準使用方法

synchronized(obj){

while(<不滿足條件>){

obj.wait();

}

滿足條件的處理過程

}

而您想要停止它,您可以使用第三種即

3 使用interrupt(),而程式會丟出InterruptedException例外,因而使得執(zhí)行緒離開run()方法,

例如:

 

復制代碼 代碼如下:

public class SomeThread {

public static void main(String[] args)

{

Thread thread=new Thread(new Runnable(){

 

public void run() {

 while (!Thread.interrupted()) {
                // 處理所要處理的工作
                try {
                   

System.out.println("go to sleep");

Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
               

System.out.println("i am interrupted!");
                }

});

thread.start();

thread.interrupt();

}

}


執(zhí)行結(jié)果為:

go to sleep

i am interrupted!

相關(guān)文章

  • Java單鏈表的實現(xiàn)代碼

    Java單鏈表的實現(xiàn)代碼

    這篇文章主要介紹了Java單鏈表的實現(xiàn)代碼的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-07-07
  • Mybatis之@ResultMap,@Results,@Result注解的使用

    Mybatis之@ResultMap,@Results,@Result注解的使用

    這篇文章主要介紹了Mybatis之@ResultMap,@Results,@Result注解的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • idea如何快速查找一個類或類中方法名和變量

    idea如何快速查找一個類或類中方法名和變量

    這篇文章主要介紹了idea如何快速查找一個類或類中方法名和變量問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • springboot+vue+elementsUI實現(xiàn)分角色注冊登錄界面功能

    springboot+vue+elementsUI實現(xiàn)分角色注冊登錄界面功能

    這篇文章主要給大家介紹了關(guān)于springboot+vue+elementsUI實現(xiàn)分角色注冊登錄界面功能的相關(guān)資料,Spring?Boot和Vue.js是兩個非常流行的開源框架,可以用來構(gòu)建Web應用程序,需要的朋友可以參考下
    2023-07-07
  • Java 數(shù)據(jù)庫連接池 DBCP 的介紹

    Java 數(shù)據(jù)庫連接池 DBCP 的介紹

    這篇文章主要給大家分享的是 Java 數(shù)據(jù)庫連接池 DBCP 的介紹, 是 Apache 旗下 Commons 項目下的一個子項目,提供連接池功能DBCP,下面來看看文章的具體介紹內(nèi)容吧,需要的朋友可以參考一下
    2021-11-11
  • java多線程-讀寫鎖原理

    java多線程-讀寫鎖原理

    本文主要介紹java多線程的知識,這里整理了相關(guān)資料及簡單示例代碼,有興趣的小伙伴可以參考下
    2016-09-09
  • 詳解SpringBoot如何實現(xiàn)整合微信登錄

    詳解SpringBoot如何實現(xiàn)整合微信登錄

    本文主要介紹了SpringBoot實現(xiàn)整合微信登錄的過程詳解,文中的示例代碼介紹的非常詳細,對我們的學習過工作有一定的參考價值,需要的朋友可以關(guān)注下
    2021-12-12
  • Java實戰(zhàn)之晚會抽獎系統(tǒng)的實現(xiàn)

    Java實戰(zhàn)之晚會抽獎系統(tǒng)的實現(xiàn)

    這篇文章主要介紹了如何利用Java語言編寫一個晚會抽獎系統(tǒng),文中采用到的技術(shù)有Jdbc、Servlert、JavaScript、JQuery、Ajax等,感興趣的可以學習一下
    2022-03-03
  • Spring詳細講解循環(huán)依賴是什么

    Spring詳細講解循環(huán)依賴是什么

    這篇文章主要介紹了Java中的Spring循環(huán)依賴詳情,文章基于Java的相關(guān)資料展開詳細介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • 詳解SpringBoot使用RedisTemplate操作Redis的5種數(shù)據(jù)類型

    詳解SpringBoot使用RedisTemplate操作Redis的5種數(shù)據(jù)類型

    本文主要介紹了SpringBoot使用RedisTemplate操作Redis的5種數(shù)據(jù)類型,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評論