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

JAVA中 終止線程的方法介紹

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

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

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

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


2、通過輪詢和共享標(biāo)志位的方法來結(jié)束線程,例如while(flag){},flag的初始值設(shè)為真,當(dāng)需要結(jié)束時(shí),將flag的值設(shè)為false。(這種方法也不很好,因?yàn)槿绻鹷hile(flag){}方法阻塞了,則flag會失效)


復(fù)制代碼 代碼如下:

public class SomeThread implements Runnable {

private volatile boolean stop = false;

public void terminate() {

stop = ture;

}

public void run() {

while(stop) {

// ... some statements

}

}

}


 

如果線程因?yàn)閳?zhí)行sleep()或是wait()而進(jìn)入Not Runnable狀態(tài),假如是wait() 用標(biāo)志位就方法就不行了,

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

wait() 的標(biāo)準(zhǔn)使用方法

synchronized(obj){

while(<不滿足條件>){

obj.wait();

}

滿足條件的處理過程

}

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

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

例如:

 

復(fù)制代碼 代碼如下:

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單鏈表的實(shí)現(xiàn)代碼

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

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

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

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

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

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

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

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

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

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

    java多線程-讀寫鎖原理

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

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

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

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

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

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

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

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

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

最新評論