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

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

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方法,不論你因為何種原因需要暫停或完全結束當前正在運行的線程。

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

方式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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 双性受合不垅腿攻np | 唯美清纯 自拍偷 | 亚洲精品久久久久久婷婷 | 99视频精品全部免费观看 | 亚洲国产无线码在线观看 | 韩国理论三级在线观看视频 | 俄罗斯freeoo性另类 | 99ri精品 | 麻豆网站在线免费观看 | japanese在线看 | 日本特黄一级午夜剧场毛片 | 亚洲aⅴ男人的天堂在线观看 | 日韩精品一区二区三区毛片 | 手机在线伦理片 | 午夜想想爱午夜剧场 | 饭冈加奈子在线播放观看 | 免费的强动漫人物的 | 女同久久另类99精品国产 | 欧式午夜理伦三级在线观看 | 男女全黄h全肉细节文 | 欧美一级视频在线观看 | 国产偷啪视频一区 | 国产精品国色综合久久 | 欧美艳星kagneyiynn高清 | 欧美高清videosdesex0 | 大团圆免费阅读全文 | 果冻传媒在线播放观看228集 | free白嫩性hd| 草草视频免费在线观看 | 日本公与妇中文在线 | 91精品国产综合久久福利 | 天堂8在线天堂资源bt | 久久99精品涩AV毛片观看 | 牛牛影院成人免费网页 | x8x8国产在线观看2021 | 动漫美女羞羞 | a及毛片| 国产高清自拍 | 免费一级片在线观看 | 欧美亚洲一区二区三区在线 | 亚洲码在线观看 |