作者nf7series (真呆)
看板java
标题[问题] Thread的执行
时间Mon Nov 26 22:01:32 2007
以下是一个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