以下是一個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