我有一個包含數據的對象,我正在用這個對象(動作將在其方法中使用對象的數據)排隊一個Action(可以執行的方法的接口)和排隊的Actions將從另一個線程執行。Java多線程問題
我想鎖定對象後發送到行動隊列(所以從我的主線程)。
因爲我不希望對象的數據在其他線程通過動作隊列處理之前被更改。
我想從另一個線程解鎖對象,一旦行爲隊列被處理。
代碼說明:
// THREAD 1
final Object object = getObjectFromSomeWhere();
// lock the object here
concurrentActionQueue.add(new Action() {
@Override
public void execute() {
// will be executed from THREAD 2
// do something with object
//unlock here once the data is processed
}
你會說,我可以發送對象的副本的動作,但我的對象包含非常大的數據複製花費到太多的時間,所以我不能。
有沒有辦法做到這一點,沒有硬編碼lock()和unlock()方法到我的對象?
消費者生產者也許格局?這裏是一個非常簡單的(不是最好的)[教程](https://www.tutorialspoint.com/javaexamples/thread_procon.htm)以 – AntJavaDev