[問題] Thread的執行

看板java作者 (真呆)時間18年前 (2007/11/26 22:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
以下是一個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
文章代碼(AID): #17Ij6zUy (java)
討論串 (同標題文章)
文章代碼(AID): #17Ij6zUy (java)