0

jruby で 2 つの単純なスレッドを適切に開始する方法を探しています。

次の 2 つのスレッドでは、最初のスレッド内のメッセージは出力されません。私は2つのスレッドを交換することができ、動作(最初のスレッドは印刷されません)は持続します:したがって、それはスレッドの内容に関するものではありません(いずれにせよスタブアウトしました)

input_before_mysql_phases_t = Thread.new do
  sprint "input_before_mysql_phases completed"
end
mysql_phases_t = Thread.new do
  sprint "mysql_phases completed"
end
sprint "awaiting completion of data fetch phases .."
sleep 5
sprint "data fetch phases completed"

出力は次のとおりです。最初のスレッドからのメッセージが出力されていないことに注意してください。

    => #<Thread:0x72d006a7 run>
[2013-04-18T12:56:29+00:00] SCHEDULER: mysql_phases completed
irb(main):540:0>     sprint "awaiting completion of data fetch phases .."
[2013-04-18T12:56:29+00:00] SCHEDULER: awaiting completion of data fetch phases ..
=> nil
irb(main):541:0>     sleep 5
=> 5
irb(main):542:0>     sprint "data fetch phases completed"
[2013-04-18T12:56:34+00:00] SCHEDULER: data fetch phases completed
4

1 に答える 1

0

sprint機能は何ですか?

これは機能します:

input_before_mysql_phases_t = Thread.new do
  sleep Random.rand(5) # Random sleep
  sprintf "input_before_mysql_phases completed"
end
mysql_phases_t = Thread.new do
  sleep Random.rand(5) #Random sleep
  sprintf "mysql_phases completed"
end


puts "awaiting completion of data fetch phases .."
# Wait for threads to finish
input_before_mysql_phases_t.join
mysql_phases_t.join
puts "data fetch phases completed"
于 2013-04-18T15:40:32.167 に答える