1.同步:synchronized
private static void demo1()).start();
new thread(()->).start();
}private static void util(string string) catch (interruptedexception e)
system.out.println("print ..." + string);}}
2.wait/notify機制
private static void demo3() catch (interruptedexception e)
system.out.println("a 2");
system.out.println("a 3");}}
});thread b = new thread(new runnable()
}});
a.start();
b.start();
}3.join() 等待另乙個執行緒完成
private static void demo2()
});thread b = new thread(new runnable() catch (interruptedexception e)
printnumber("b");
}});
b.start();
a.start();
}private static void printnumber(string threadname) catch (interruptedexception e)
system.out.println(threadname + " print: " + i);}}
4.countdownlatch(計數器),cyclicbarrier(同時進行)
private static void rundafterabc() catch (interruptedexception e)
}).start();
for (char threadname='a'; threadname <= 'c'; threadname++) catch (exception e)
system.out.println(tn + " finished");
countdownlatch.countdown();
}).start();}}
/*** 每個執行緒逐漸進入等待
* 都進入等待狀態時:同時觸發
*/private static void runabcwhenallready() catch (exception e)
system.out.println(rn + " starts running"); // 所有運動員都準備好了,一起開始跑
}).start();}}
5.futuretask
private static void dotaskwithresultinworker()
system.out.println("task finished and return result");
return result;
};futuretaskfuturetask = new futuretask<>(callable);
new thread(futuretask).start();
try catch (exception e)
}
執行緒間怎麼通訊?
乙個程序當中的話一般都不止乙個執行緒.當執行緒比較多得時候就會發生一些衝突,這個時候我們就得讓執行緒之間進行通訊.告訴他們執行的順序.比如a執行完之後執行b.執行緒之間的通訊的有兩個問題,就是同步和互斥.互斥就是說對同一塊資源幾個執行緒同時訪問,但是同一時刻只能允許乙個執行緒對齊進行訪問.其他執行緒...
執行緒間通訊 執行緒優先順序 Thread 執行緒池
1.執行緒間通訊 多個執行緒 操作同乙個資源 但是操作的動作不同 例如 銀行卡 存錢 取錢 執行緒的等待喚醒機制 wait 等待 讓執行緒進入凍結狀態 放棄了執行權 等待的執行緒會放到等待池中 notify 喚醒 會喚醒等待池中的執行緒 喚醒的是第乙個等待的執行緒 notifyall 喚醒等待的所有...
執行緒間通訊
執行緒間通訊 多個執行緒在操作統一資源,但各個執行緒操作的動作不同。資源 class res class input implements runnable public void run else x x 1 2 class output implements runnable public vo...