3 回答

TA貢獻1852條經(jīng)驗 獲得超1個贊
每當someMethod()
釋放對象所屬實例上的監(jiān)視器時。這應該Thread.start()
在您的代碼中調用后。這里沒有魔術,synchronized
適用標準規(guī)則。

TA貢獻1797條經(jīng)驗 獲得超4個贊
同步方法意味著只有一個線程能夠一次訪問任何方法執(zhí)行。這包括聲明和執(zhí)行一個新實例,以及示例中的新線程實例:
new Thread(new Runnable() {
public void run() {
//Do more stuff.
}
}).start();
接下來要觸發(fā)的線程將聲明一個新的不同實例,并且由于您尚未將以前聲明的線程存儲在任何地方,因此將無法訪問該線程。
可以進行一些修改來訪問它:
synchronized void someMethod(int id, HashMap threadsMap) {
//Do stuff.
threadsMap.set(id, new Thread(new Runnable() {
public void run() {
//Do more stuff.
}
}));
threadsMap.get(id).start();
}
這將允許您通過其ID訪問每個線程
添加回答
舉報