如果我使用以下代码启动了一个线程,如何从线程本身捕获/检测退出调用,以便在它终止之前进行一些清理?
thr = Thread.new { sleep }
thr.status # => "sleep"
thr.exit
thr.status # => false
我在想也许它会像下面这样,但我不确定。
thr = Thread.new {
begin
sleep
rescue StandardError => ex
puts ex.message
rescue SystemExit, Interrupt
puts 'quit'
ensure
puts 'quit'
end
}
thr.status # => "sleep"
thr.exit #=> "quit"
thr.status # => false