亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Java終止線程實例和stop()方法源碼閱讀

2024-07-13 10:15:43
字體:
來源:轉載
供稿:網友

了解javascript/51000.html">java/192732.html">java/244762.html">線程

概念

線程 是程序中的執行線程。Java 虛擬機允許應用程序并發地運行多個執行線程。

線程特點

擁有狀態,表示線程的狀態,同一時刻中,JVM中的某個線程只有一種狀態;

·NEW

尚未啟動的線程(程序運行開始至今一次未啟動的線程)

·RUNNABLE

可運行的線程,正在JVM中運行,但它可能在等待其他資源,如CPU。

·BLOCKED

阻塞的線程,等待某個鎖允許它繼續運行

·WAITING

無限等待(再次運行依賴于讓它進入該狀態的線程執行某個特定操作)

·TIMED_WAITING

定時等待(再次運行依賴于讓它進入該狀態的線程在指定等待時間內某個特定操作)

·TERMINATED

已退出的線程

擁有優先級,決定線程的執行順序;

1至10之間的整數,默認數值為5。數值越高,執行的幾率越高,優先級并不能決定線程的執行順序。

子線程的優先級默認同父線程的一樣。

注意,當以下情況發生時,JVM將停止執行所有線程:

Runtime(運行時)的exit ()方法被調用并且該方法的調用被Security Manager所允許;

所有的“非守護線程”都已停止運行(無論時正常停止還是一場停止);

可以被標記為守護程序(Daemon)

守護線程的子線程仍是守護線程;

守護線程也就是“后臺線程”,一般用來執行后臺任務,而用戶線程一般用戶執行用戶級任務。

終止線程的方法

1.使用退出標志,使線程正常退出,也就是當run方法完成后線程終止。

當run方法執行完后,線程就會退出。但有時run方法是永遠不會結束的。如在服務端程序中使用線程進行監聽客戶端請求,或是其他的需要循環處理的任務。在這種情況下,一般是將這些任務放在一個循環中,如while循環。如果想讓循環永遠運行下去,可以使用while(true){……}來處理。但要想使while循環在某一特定條件下退出,最直接的方法就是設一個boolean類型的標志,并通過設置這個標志為true或false來控制while循環是否退出。下面給出了一個利用退出標志終止線程的例子。

FlagExitThread.java

package com.rainmonth;/*** Created by RandyZhang on 2017/3/23.*/public class FlagExitThread extends Thread {	public volatile Boolean isExit = false;	public FlagExitThread(String name) {		super(name);	}	@Override	  public void run() {		while (!isExit) {			System.out.println("I'm running");		}	}}

DemoClient.java

package com.rainmonth;/*** Created by RandyZhang on 2017/3/23.*/public class DemoClient {	public static void main(String[] args) {		System.out.println("優雅的終止線程實例");		exitByFlag();		// exitByInterrupt();	}	private static void exitByFlag() {		FlagExitThread flagExitThread = new FlagExitThread(FlagExitThread.class.getSimpleName());		flagExitThread.start();		try {			Thread.sleep(1000);			flagExitThread.isExit = true;			flagExitThread.join();			System.out.println("線程退出");		}		catch (InterruptedException e) {			e.printStackTrace();		}	}	private static void exitByInterrupt() {		FlagExitThread flagExitThread = new FlagExitThread(FlagExitThread.class.getSimpleName());		System.out.println("flagExitThread running...");		flagExitThread.start();		try {			Thread.sleep(1500);			System.out.println("flagExitThread interrupted...");			flagExitThread.interrupt();			Thread.sleep(1500);			System.out.println("stop application...");		}		catch (InterruptedException e) {			e.printStackTrace();		}	}}

輸出結果:

打印了一大堆I'm running之后線程退出。

2.使用stop方法強行終止線程(這個方法不推薦使用,因為stop和suspend、resume一樣,也可能發生不可預料的結果)。

顯示調用stop()方法。源碼中關于stop() 的描述如下:

/** This method is inherently unsafe. Stopping a thread with* Thread.stop causes it to unlock all of the monitors that it* has locked (as a natural consequence of the unchecked* <code>ThreadDeath</code> exception propagating up the stack). If* any of the objects previously protected by these monitors were in* an inconsistent state, the damaged objects become visible to* other threads, potentially resulting in arbitrary behavior. Many* uses of <code>stop</code> should be replaced by code that simply* modifies some variable to indicate that the target thread should* stop running. The target thread should check this variable* regularly, and return from its run method in an orderly fashion* if the variable indicates that it is to stop running. If the* target thread waits for long periods (on a condition variable,* for example), the <code>interrupt</code> method should be used to* interrupt the wait.*/

大意就是說,該方法的不安全性時固有的。調用stop()終止一個線程會釋放它已經鎖定的所有監視器(這將導致沿堆棧向上傳播為檢查的ThreadDeath異常被拋出),若此時之前受這些被釋放的監視器保護的對象存在不一致性,并且這些對象對其他線程可見,這就會導致一些意想不到的后果。stop操作應該有哪些僅僅只需要修改某些代碼就可以指示目標線程應該停止運行的代碼來取代(方法一就是這種方式)。如果目標線程由于等待某一條件(如某個條件變量)等待很長時間,我們應該使用interrupt方法來中斷該等待(方法三就是這種方式)。

3.使用interrupt方法中斷線程。

interrupt字面上是終止的意思,但不要試圖通過調用interrupt來終止線程,因為有時即使你調用了該方法,線程仍然會繼續執行,可以注釋掉上面的exitByFlag(),開啟exitByInterrupt() 方法,發現及時調用了interrupt()方法,仍在一直輸出I'm running…(不同系統及CPU結果可能有所不同),可見采用interrupt方式也是不安全的。

總結

根據以上的分析,最值得推薦的方式是第一種,我們可以用共享變量(shared variable)的方式來設置標志,并發出信號,通知線程必須終止。當然對這個共享變量的操作我們必須保證是同步的。

以上就是本文關于Java終止線程實例和stop()方法源碼閱讀的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品人人做人人爽| 国产v综合v亚洲欧美久久| 久久中文字幕一区| 狠狠做深爱婷婷久久综合一区| 亚洲图中文字幕| 国产精品r级在线| 欧美多人爱爱视频网站| 久久人人爽人人| 在线成人中文字幕| 91av国产在线| 国内精品国产三级国产在线专| 97香蕉久久夜色精品国产| 国产精品伦子伦免费视频| 国产精品激情av电影在线观看| 国产欧美精品一区二区三区-老狼| 亚洲自拍在线观看| 亚洲精品动漫久久久久| 亚洲精品国产精品国自产观看浪潮| 色哟哟亚洲精品一区二区| 日韩av免费在线播放| 红桃视频成人在线观看| 色老头一区二区三区在线观看| 成年无码av片在线| 欧美在线视频观看免费网站| 亚洲r级在线观看| 国产suv精品一区二区| 久久色免费在线视频| 日韩欧美aⅴ综合网站发布| 欧美激情精品久久久久久免费印度| 日本精品在线视频| 久久久久久国产精品| 日韩中文字幕免费看| 国产成人亚洲综合青青| 亚洲人成电影在线观看天堂色| 在线播放日韩专区| 亚洲午夜精品久久久久久久久久久久| 成人中文字幕+乱码+中文字幕| 欧美久久精品午夜青青大伊人| 欧美国产日韩一区二区三区| 青青久久av北条麻妃黑人| 日韩欧美中文免费| 日韩视频免费看| 欧美成人自拍视频| 欧美精品在线网站| 亚洲爱爱爱爱爱| 国产999视频| 国产日韩换脸av一区在线观看| www.欧美精品| 国内精久久久久久久久久人| 亚洲人午夜精品免费| 在线观看精品自拍私拍| 国产欧美精品日韩精品| 日韩av一区在线观看| 精品亚洲aⅴ在线观看| 69久久夜色精品国产7777| 欧美激情视频免费观看| 亚洲v日韩v综合v精品v| 91高清视频在线免费观看| 欧美电影免费观看电视剧大全| 亚洲一区二区三区香蕉| 播播国产欧美激情| 日本精品久久久久久久| 高潮白浆女日韩av免费看| 午夜精品美女自拍福到在线| 久久久久久久久久国产| 欧美在线视频免费播放| 欧美日韩国产成人高清视频| 亚洲第一网站免费视频| 91社影院在线观看| 日韩中文字幕久久| 欧美日韩国产一中文字不卡| 91免费在线视频| 欧美成人一区二区三区电影| 国产欧美日韩中文字幕在线| 91影视免费在线观看| 日韩激情av在线免费观看| 欧美日韩福利在线观看| 性欧美激情精品| 亚洲高清免费观看高清完整版| 亚洲日韩第一页| 97香蕉久久超级碰碰高清版| 97免费视频在线| 91视频-88av| 国产精品吊钟奶在线| 亚洲桃花岛网站| 欧美老少配视频| 国产suv精品一区二区三区88区| 中文字幕亚洲综合| 久久全国免费视频| 久久久久国色av免费观看性色| 日韩国产精品一区| 91沈先生作品| 欧美丰满老妇厨房牲生活| 久久久之久亚州精品露出| 成人综合国产精品| 91在线观看免费观看| 久久久久中文字幕2018| 久久不射电影网| 成人国产在线激情| 欧美成人精品h版在线观看| 亚洲最新中文字幕| 日韩大片免费观看视频播放| www日韩中文字幕在线看| 国产成+人+综合+亚洲欧美丁香花| 日韩高清电影免费观看完整版| 91国自产精品中文字幕亚洲| 精品夜色国产国偷在线| 成人妇女免费播放久久久| 亚洲free嫩bbb| 久久天天躁狠狠躁夜夜躁2014| 欧美激情久久久久久| 91精品国产高清自在线| 精品国产欧美一区二区三区成人| 精品视频在线播放免| 日韩在线不卡视频| 清纯唯美日韩制服另类| 欧美日韩国产区| 97精品视频在线播放| 久久成人人人人精品欧| 欧美性开放视频| 久久九九国产精品怡红院| 国模gogo一区二区大胆私拍| 最近2019年中文视频免费在线观看| 少妇高潮久久77777| 欧美日韩一区二区免费视频| 国产精品久久久久久久久粉嫩av| 日本伊人精品一区二区三区介绍| 国产美女精品视频免费观看| 国产成人综合久久| 日韩精品免费在线播放| 国产精品极品美女粉嫩高清在线| 96精品久久久久中文字幕| 亚洲理论片在线观看| 国产精品久久久久久久久久东京| 亚洲欧美中文日韩在线| 国产精品视频精品视频| 成人在线视频福利| 国产999精品视频| 久久手机免费视频| 国内精品中文字幕| 欧美人交a欧美精品| 日韩一区二区久久久| 久久久久久美女| 中文字幕亚洲一区二区三区| 久久精品精品电影网| 亚洲最大中文字幕| 美女视频黄免费的亚洲男人天堂| 日韩精品免费观看| 日韩电视剧在线观看免费网站| 亚洲性视频网站| 91视频免费在线| 国产精品老女人精品视频| 亚洲免费视频在线观看| 久久天堂电影网| 欧美日韩国产在线| 中文日韩电影网站| 成人激情视频小说免费下载| 欧美午夜xxx| 一区二区欧美日韩视频| 午夜精品蜜臀一区二区三区免费| 97欧美精品一区二区三区| 日本19禁啪啪免费观看www| 国产精品美女网站| 青青草原成人在线视频|