これが何を意味するかを説明する例を次に示します (ここからのコード例)。
Thread.wakeup
thread = Thread.new do
Thread.stop
puts "Inside the thread block"
end
$ thread
=> #<Thread:0x100394008 sleep>
上記の出力は、stop コマンドにより、新しく作成されたスレッドがスリープ状態になっていることを示しています。
$ thread.wakeup
=> #<Thread:0x100394008 run>
この出力は、スレッドがもうスリープ状態ではなく、実行できることを示しています。
$ thread.run
Inside the thread block
=> #<Thread:0x1005d9930 sleep>
スレッドは実行を継続し、文字列を出力します。
$ thread.run
ThreadError: killed thread
スレッド実行
thread = Thread.new do
Thread.stop
puts "Inside the thread block"
end
$ thread
=> #<Thread:0x100394008 sleep>
$ thread.run
Inside the thread block
=> #<Thread:0x1005d9930 sleep>
スレッドは起動するだけでなく、実行を継続して文字列を出力します。
$ thread.run
ThreadError: killed thread