看板 java 關於我們 聯絡資訊
※ 引述《nf7series (真呆)》之銘言: : 執行的結果是 : started : ran : interrupting : ended : t.start()後,先去跑t執行緒的sleep(1000),然後跑main執行緒的印出started, : 再來main執行緒暫停2秒,因此印出t執行緒的ran,接著印出main執行緒的interrupting, : t.interrupt()後再印出ended 基本上執行流程正確, 但我認為這樣的敘述仍然有些瑕疵, 像是呼叫 t.start() 後,不一定會先去執行該執行緒中的 sleep(1000), (根據我的經驗,會先繼續執行 main,不過你應該假設為"不一定") : 以上解釋不知道是否正確,另外,t.interrupt()之前t執行緒都跑完了,為何還能interrupt : 呢? 根據 API 說明, "Interrupting a thread that is not alive need not have any effect." 我認為這只是設計者的決定。 這當然也是有可能設計成, 如果這個 thread 已經執行完畢後,再被呼叫 interrupt() 時丟出一個 exception, 只是也許設計者並不認為這樣做會比較好。 不過以 thread 的角度來看,我也認為目前的設計比較好。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.170.163