2 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊
正如Solomon Slow指出的那樣,錯(cuò)誤是我正在創(chuàng)建一個(gè)新線程,然后忘記了它。該錯(cuò)誤是在嘗試解決不相關(guān)的問題時(shí)引入的。下面的代碼為我提供了與倒計(jì)時(shí)閂鎖相同的結(jié)果(預(yù)期)。
for (UserThread thread : threadArray)
{
thread = new UserThread();
thread.start();
}
for (UserThread thread : threadArray)
{
if (thread != null)
thread.join();
}

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊
據(jù)了解,此處的問題與線程變量引用分配有關(guān)。您正在嘗試分配給變量 ,它是迭代變量。此賦值不會(huì)更改數(shù)組,因?yàn)樽兞渴菍?duì)當(dāng)前數(shù)組元素的引用副本。如果你想正確初始化,你應(yīng)該在與計(jì)數(shù)器的公共循環(huán)中執(zhí)行此操作:threadthread
for (int i = 0; i < threadArray.length; ++i) {
UserThread newThread = new UserThread();
threadArray[i] = newThread;
threadArray[i].start();
}
之后,您似乎可以加入線程。
添加回答
舉報(bào)