日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java多线程-线程状态

發(fā)布時間:2024/7/5 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java多线程-线程状态 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

線程狀態(tài)

6個狀態(tài)定義:java.lang.Thread.State

  • New: 尚未啟動的線程的線程狀態(tài)。
  • Runnable: 可運行線程的線程狀態(tài),等待CPU調(diào)度。
  • Blocked: 線程阻塞等待監(jiān)視器鎖定的線程狀態(tài)。處于synchronized同步代碼塊或方法中被阻塞。
  • Waiting: 等待線程的線程狀態(tài)。下列不帶超時的方式:Object.wait、Thread.join、LockSupport.park
  • Timed Waiting: 具有指定等待時間的等待線程的線程狀態(tài)。下列超時的方式:Thread.sleep、Object.wait、Thread.join、LockSupport.parkNanos、LockSupport.parkUntil
  • 常見線程狀態(tài)切換

    新建->運行->終止

    Thread thread1 = new Thread(new Runnable() {@Overridepublic void run() {System.out.println("thread1當(dāng)前狀態(tài):" + Thread.currentThread().getState().toString());System.out.println("thread1 執(zhí)行了");}}); System.out.println("沒調(diào)用start方法,thread1當(dāng)前狀態(tài):" + thread1.getState().toString()); thread1.start(); Thread.sleep(2000L); // 等待thread1執(zhí)行結(jié)束,再看狀態(tài) System.out.println("等待兩秒,再看thread1當(dāng)前狀態(tài):" + thread1.getState().toString());

    新建->運行->等待->運行->終止

    Thread thread2 = new Thread(new Runnable() {@Overridepublic void run() {try {// 將線程2移動到等待狀態(tài),1500后自動喚醒Thread.sleep(1500);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("thread2當(dāng)前狀態(tài):" + Thread.currentThread().getState().toString());System.out.println("thread2 執(zhí)行了");}}); System.out.println("沒調(diào)用start方法,thread2當(dāng)前狀態(tài):" + thread2.getState().toString()); thread2.start(); System.out.println("調(diào)用start方法,thread2當(dāng)前狀態(tài):" + thread2.getState().toString()); Thread.sleep(200L); // 等待200毫秒,再看狀態(tài) System.out.println("等待200毫秒,再看thread2當(dāng)前狀態(tài):" + thread2.getState().toString()); Thread.sleep(3000L); // 再等待3秒,讓thread2執(zhí)行完畢,再看狀態(tài) System.out.println("等待3秒,再看thread2當(dāng)前狀態(tài):" + thread2.getState().toString());

    新建->運行->阻塞->運行->終止

    Thread thread3 = new Thread(new Runnable() {@Overridepublic void run() {synchronized (Demo2.class) {System.out.println("thread3當(dāng)前狀態(tài):" + Thread.currentThread().getState().toString());System.out.println("thread3 執(zhí)行了");}}}); synchronized (Demo2.class) {System.out.println("沒調(diào)用start方法,thread3當(dāng)前狀態(tài):" + thread3.getState().toString());thread3.start();System.out.println("調(diào)用start方法,thread3當(dāng)前狀態(tài):" + thread3.getState().toString());Thread.sleep(200L); // 等待200毫秒,再看狀態(tài)System.out.println("等待200毫秒,再看thread3當(dāng)前狀態(tài):" + thread3.getState().toString()); } Thread.sleep(3000L); // 再等待3秒,讓thread3執(zhí)行完畢,再看狀態(tài) System.out.println("等待3秒,讓thread3搶到鎖,再看thread3當(dāng)前狀態(tài):" + thread3.getState().toString());

    轉(zhuǎn)載于:https://www.cnblogs.com/loveyous/p/11410786.html

    總結(jié)

    以上是生活随笔為你收集整理的Java多线程-线程状态的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。