作者tkcn (小安)
看板java
标题Re: [问题] Thread的执行
时间Tue Nov 27 00:04:19 2007
※ 引述《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