我想對線程中斷進行一些說明。java中的線程中斷
如果一個線程長時間不調用拋出anInterruptedException的方法會怎麼樣?然後它必須定期調用Thread.interrupted,如果接收到中斷,則返回true。例如:
for (int i = 0; i < inputs.length; i++) {
heavyCrunch(inputs[i]);
if (Thread.interrupted()) {
// We've been interrupted: no more crunching.
return;
}
}
當我打電話Thread.interrupt()
它會拋出異常中斷這樣的方法,爲什麼我需要做if (Thread.interrupted())
我只會做
try {
for (int i = 0; i < inputs.length; i++) {
heavyCrunch(inputs[i]);
if (Thread.interrupted()) {
// We've been interrupted: no more crunching.
return;
}
}
} catch (InterruptedException ex) {
...
}
你可以使用布爾標誌來控制你的線程而不是Thread.interrupted()。這是更安全更清潔的解決方案 – hoaz
'interrupt()'是一個實例方法,而不是一個靜態方法,所以它必須在線程實例上顯式調用。 – superEb