導航:首頁 > 編程語言 > java停止運行線程

java停止運行線程

發布時間:2023-08-16 06:33:06

『壹』 java 中如何使線程運行一定時間後停止

java中使線程運行一定時間後停止,可以設置一個變數,當滿足條件則退出線程:

importstaticjava.lang.Thread.currentThread;
importjava.util.concurrent.TimeUnit;
publicclassThreadPauseDemo{
publicstaticvoidmain(Stringargs[])throwsInterruptedException{
Gamegame=newGame();
Threadt1=newThread(game,"T1");
t1.start();
//現在停止Game線程
System.out.println(currentThread().getName()+"isstoppinggamethread");
game.stop();
//查看Game線程停止的狀態
TimeUnit.MILLISECONDS.sleep(200);
System.out.println(currentThread().getName()+"isfinishednow");
}
}

classGameimplementsRunnable{
=false;
publicvoidrun(){
while(!isStopped){
System.out.println("Gamethreadisrunning......");
System.out.println("Gamethreadisnowgoingtopause");
try{
Thread.sleep(200);
}catch(InterruptedExceptione){
e.printStackTrace();
}
System.out.println("Gamethreadisnowresumed......");
}
System.out.println("Gamethreadisstopped......");
}
publicvoidstop(){
isStopped=true;
}
}

程序輸出如下:

Game thread is running......
main is stopping game thread
Game thread is now going to pause
Game thread is now resumed......
Game thread is stopped......
main is finished now

『貳』 Java中如何正確而優雅的終止運行中的線程

Java中終止線程的方式主要有三種:

1、使用stop()方法,已被棄用。原因是:stop()是立即終止,會導致一些數據被到處理一部分就會被終止,而用戶並不知道哪些數據被處理,哪些沒有被處理,產生了不完整的「殘疾」數據,不符合完整性,所以被廢棄。So, forget it!

2、使用volatile標志位

看一個簡單的例子:

首先,實現一個Runnable介面,在其中定義volatile標志位,在run()方法中使用標志位控製程序運行

{

//定義退出標志,true會一直執行,false會退出循環
//使用volatile目的是保證可見性,一處修改了標志,處處都要去主存讀取新的值,而不是使用緩存
publicvolatilebooleanflag=true;

publicvoidrun(){
System.out.println("第"+Thread.currentThread().getName()+"個線程創建");

try{
Thread.sleep(1000L);
}catch(InterruptedExceptione){
e.printStackTrace();
}

//退出標志生效位置
while(flag){
}
System.out.println("第"+Thread.currentThread().getName()+"個線程終止");
}
}

然後,在main()方法中創建線程,在合適的時候,修改標志位,終止運行中的線程。

publicclassTreadTest{
publicstaticvoidmain(String[]arg)throwsInterruptedException{
MyRunnablerunnable=newMyRunnable();

//創建3個線程
for(inti=1;i<=3;i++){
Threadthread=newThread(runnable,i+"");
thread.start();
}
//線程休眠
Thread.sleep(2000L);
System.out.println("——————————————————————————");
//修改退出標志,使線程終止
runnable.flag=false;
}
}

最後,運行結果,如下:

第1個線程創建
第2個線程創建
第3個線程創建
--------------------------
第2個線程終止
第1個線程終止
第3個線程終止

3、使用interrupt()中斷的方式,注意使用interrupt()方法中斷正在運行中的線程只會修改中斷狀態位,可以通過isInterrupted()判斷。如果使用interrupt()方法中斷阻塞中的線程,那麼就會拋出InterruptedException異常,可以通過catch捕獲異常,然後進行處理後終止線程。有些情況,我們不能判斷線程的狀態,所以使用interrupt()方法時一定要慎重考慮。

『叄』 java線程如何停止

通過調用interrupt方法可以使得處於阻塞狀態的線程拋出一個異常,即interrupt方法可以用來中斷一個正處於阻塞狀態的線程;另外,改方法還會設置線程的中斷狀態(註:isInterrupted()可以用來查詢中斷狀態)。

閱讀全文

與java停止運行線程相關的資料

熱點內容
程序員如何換個城市生活 瀏覽:145
JS開發PDF 瀏覽:285
app格式不對怎麼辦 瀏覽:96
32位定時器單片機 瀏覽:332
安卓編譯不能進行下一步簽名 瀏覽:607
男生做保潔解壓視頻 瀏覽:750
qd88yg壓縮機參數 瀏覽:385
pubg國際服伺服器有什麼區別 瀏覽:506
怎麼打開文件夾自動刪除 瀏覽:685
php中英文切換 瀏覽:445
php168數據 瀏覽:79
水壓縮後有彈性 瀏覽:47
蘇州阿里雲伺服器數據備份 瀏覽:524
消息提示音怎麼設置安卓 瀏覽:279
怎麼去掉安卓手機的小圓圈 瀏覽:476
女程序員每天教你一招 瀏覽:590
葯劑學pdf下載 瀏覽:477
打開的共享文件夾少東西 瀏覽:643
芝麻黑頭解壓去除視頻 瀏覽:186
光明與黑暗怎麼進入伺服器 瀏覽:659