Java多线程-线程状态
生活随笔
收集整理的這篇文章主要介紹了
Java多线程-线程状态
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
線程狀態(tài)
6個狀態(tài)定義:java.lang.Thread.State
常見線程狀態(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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java多线程-程序运行堆栈分析
- 下一篇: Java多线程-线程中止