看板 java 關於我們 聯絡資訊
以下是一個scjp考古題,要問output是什麼? public class A { public static void main(String[] args) throws Exception { Runnable r=new Runnable(){ public void run() { try { Thread.sleep(1000); } catch(InterruptedException e){System.out.println("interrupted");} System.out.println("ran"); } }; Thread t=new Thread(r); t.start(); System.out.println("started"); t.sleep(2000); System.out.println("interrupting"); t.interrupt(); System.out.println("ended"); } } 執行的結果是 started ran interrupting ended t.start()後,先去跑t執行緒的sleep(1000),然後跑main執行緒的印出started, 再來main執行緒暫停2秒,因此印出t執行緒的ran,接著印出main執行緒的interrupting, t.interrupt()後再印出ended 以上解釋不知道是否正確,另外,t.interrupt()之前t執行緒都跑完了,為何還能interrupt 呢? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.73.98.93