java条件执行方法_java 开启多线程里面如何加条件判断执行其他逻辑?
方法1:通過Thread類中的isAlive()方法判斷線程是否處于活動狀態(tài)。
線程啟動后,只要沒有運行完畢,都會返回true。
【注】如果只是要等其他線程運行結束之后再繼續(xù)操作,可以執(zhí)行t.join(),即:在t執(zhí)行完畢前掛起。
方法2:通過Thread.activeCount()方法判斷當前線程的線程組中活動線程的數(shù)目,為1時其他線程運行完畢。
方法3:通過java.util.concurrent.Executors中的方法創(chuàng)建一個線程池,用這個線程池來啟動線程。啟動所有要啟動的線程后,執(zhí)行線程池的shutdown()方法,即在所有線程執(zhí)行完畢后關閉線程池。然后通過線程池的isTerminated()方法,判斷線程池是否已經(jīng)關閉。線程池成功關閉,就意味著所有線程已經(jīng)運行完畢了。
示例代碼:1?import?java.util.concurrent.ExecutorService;
2?import?java.util.concurrent.Executors;
3??4?public?class?Test?{
5????6?????public?static?void?main(String?args[])?throws?InterruptedException?{
7?????????ExecutorService?exe?=?Executors.newFixedThreadPool(50);
8?????????for?(int?i?=?1;?i?<=?5;?i++)?{
9?????????????exe.execute(new?SubThread(i));
10?????????}
11?????????exe.shutdown();
12?????????while?(true)?{
13?????????????if?(exe.isTerminated())?{
14?????????????????System.out.println("結束了!");
15?????????????????break;
16?????????????}
17?????????????Thread.sleep(200);
18?????????}
19?????}
20?}
一個思路:
?
給所有的線程加上同步(同一個鎖),主線程在啟動其他所有線程后wait()。每個線程運行結束后,執(zhí)行notify()方法。設定一個值為其他線程數(shù)量的int計數(shù)器count,寫一個while循環(huán),循環(huán)條件為count-->0,循環(huán)內(nèi)容為wait()。則所有線程運行結束后正好while循環(huán)結束。
致命缺陷:如果幾個線程同時運行結束,有可能在主線程還沒運行時,已經(jīng)執(zhí)行了好幾次notify()方法。如果這樣的話,while循環(huán)就永遠不會結束了,主線程一直wait()下去。
總結
以上是生活随笔為你收集整理的java条件执行方法_java 开启多线程里面如何加条件判断执行其他逻辑?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 欧米茄表多少钱啊?
- 下一篇: 加特林炼狱多少钱啊?