一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java創建與結束線程代碼示例

Java創建與結束線程代碼示例

2021-01-25 11:54專業搬磚工 Java教程

這篇文章主要介紹了Java創建與結束線程代碼示例,小編覺得挺不錯的,這里分享給大家,供需要的朋友參考。

本文講述了在Java中如何創建和結束線程的最基本方法,只針對于Java初學者。一些高級知識如線程同步、調度、線程池等內容將會在后續章節中逐步深入。

創建線程

創建普通線程有兩種方式,繼承Thread類或實現Runnable接口。示例如下。

方法1:繼承Thread類

創建方法示例:

?
1
2
3
4
5
6
7
8
public class MyThread1 extends Thread {
   @Override
   public void run() {
     //TODO Auto-generated method stub
     super.run();   
     System.out.println("Execute thread:MyThread1");
   }  
}

方法2:實現Runnable接口

創建方法示例:

?
1
2
3
4
5
6
7
public class MyRunnable1 implements Runnable {
   @Override
   public void run() {
     //TODO Auto-generated method stub
     System.out.println("Execute thread:MyRunnable1");
   }
}

運行線程

針對上述兩種方法,調用線程開始運行的方法分別如下。

方式示例1:new MyThread1().start();
方法示例2:new Thread(new MyRunnable1()).start();

停止線程

請不要采取已經過時(deprecated)的java.lang.Thread.stop方法,不論你因為何種原因需要暫?;蛲耆Y束當前正在運行的線程。

常見的退出線程的方法如下。

方式1:線程自動退出

線程執行完畢,自動退出。例如網絡下載線程,當后臺下載完后,線程自動退出。

方法2:使用interrupt主動退出

在主線程中,調用線程對象的interrupt()方法,設置線程狀態。

?
1
2
3
4
5
6
7
8
final Thread t = new MyThread2();
t.start();
try {
   Thread.sleep(500);
} catch(InterruptedException e) {
   e.printStackTrace();
}
t.interrupt();

在子線程中,調用isInterrupted()方法判斷線程狀態。如果返回true,則可以結束線程運行。如下示例代碼,在線程中有一個while循環,每次循環都會判斷線程狀態,如果為true,則停止循環,退出線程。

?
1
2
3
4
5
6
7
8
9
10
11
12
public class MyThread2 extends Thread {
   @Override
   public void run() {
     super.run();
     while(true) {
       // Cancel thread when call interrupt() method
       if (Thread.currentThread().isInterrupted()) {
          break;
       }
     }
   }
}

在主線程中調用interrupt設置狀態,在子線程中通過isInterrupted獲取狀態,是最好的結束線程的方法。注意主線程中一旦調用interrupt,子線程中相關的sleep, wait方法在執行時會拋出InterruptedException異常,此時也可以通過捕獲這種異常來結束線程。

方式3:使用預設標志主動退出

預設一個退出標志,通過判斷標志的值結束線程運行。這種情況常見于循環執行中的任務。在每次循環時,判斷標志值。如下示例,在線程while循環中判斷mCancelFlag標志。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class MyThread3 extends Thread {
   private boolean mCancelFlag;  
   @Override
   public void run() {
     super.run();
     System.out.println("Thread start");
     while (mCancelFlag) {
       // Cancel thread when call interrupt() method
       break;
     }
     System.out.println("Thread over");
   }  
   public void cancelThread() {
     mCancelFlag = true;
   }
}

當主線程希望主動結束線程時,調用線程的cancelThread方法設置mCancelFlag即可。

?
1
2
3
4
5
6
7
8
9
final MyThread3 t = new MyThread3();
t.start();
try {
   Thread.sleep(500);
} catch (InterruptedException e) {
   e.printStackTrace();
}
// stop thread
t.cancelThread();

如果在線程執行時,需要主動退出線程,最佳的方式為方法2。用戶根據實際情況,例如更多的狀態控制,也可以使用方法3。

一句話總結

創建線程:繼承Thread類或實現Runnable接口。

結束線程:調用interrupt方法。

總結

以上就是本文關于Java創建與結束線程代碼示例的全部內容,希望對大家有所幫助。如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

原文鏈接:http://blog.csdn.net/light_vs_shadow/article/details/54292809

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品亚洲视频在线 | 美女大鸡鸡 | 日本黄大片影院一区二区 | 九九九九九九 | 亚洲性69影视 | 亚洲视频在线观看免费视频 | 美女靠逼免费视频 | 日韩一级片在线免费观看 | 国产精品刺激好大好爽视频 | 日韩欧美国内 | 网友自拍咪咪爱 | 亚洲欧美日韩特级毛片 | 欧美日韩一区二区中文字幕视频 | 欧美 亚洲 综合 卡通 另类 区 | 久久91精品国产91 | 国偷盗摄自产福利一区在线 | 精品欧美男同同性videos | 日日摸日日添日日透 | 91免费永久在线地址 | 五月一区二区久久综合天堂 | 美女脱了内裤打开腿让人桶网站o | 洗濯屋H纯肉动漫在线观看 武侠艳妇屈辱的张开双腿 午夜在线观看免费观看 视频 | 亚州性夜夜射在线观看 | 3d动漫美女被吸乳羞羞视频 | 欧洲第一区第二区第三区 | 欧美一级欧美三级在线 | 日韩欧美中文在线 | 午夜伦理yy44008影院 | 久久人妻熟女中文字幕AV蜜芽 | 精品一区二区三区波多野结衣 | 含羞草国产亚洲精品岁国产精品 | 美女的让男人桶爽30分钟的 | 俄罗斯海滩厕所偷窥 | 激情另类国内一区二区视频 | 精品免费| 成人免费一区二区三区在线观看 | 欧美一级在线播放 | 天天久久影视色香综合网 | 亚洲精品视频免费在线观看 | 小泽玛丽av无码观看 | 国产日韩欧美不卡www |