3
我在的ThreadPoolExecutor $ Worker.runTask奇怪的代碼
if (runState < STOP && Thread.interrupted() && runState >= STOP)
thread.interrupt();
發現這樣奇怪的代碼,爲什麼它需要檢查runState < STOP
和runState >= STOP
。 有一個評論,在某種程度上解釋爲什麼這樣的雙重檢查是必要的,但我不明白這一點。
因此,要計算表達式的最終值,它將從內存中運行runState,然後調用Thread.interrupted(),然後再從內存runState中取出(第一個runState可能與第二個不同),並將這三個表達式的值與和?