Я пытаюсь создать простую многопоточную программу с jRuby. Он должен запускать и останавливать потоки в течение определенного периода времени, например бежать в течение пяти секунд, затем остановиться. Я довольно новичок в такого рода вещах, так что это, вероятно, довольно просто, но я не могу заставить его работать.
Соответствующий код выглядит так:
require 'java'
require 'timeout'
require './lib/t1.rb'
require './lib/t2.rb'
class Threads
[...]
def manage_threads
thread2 = T2.new
# Wait for 5 seconds before the thread starts running..
thread2.run(wait_time = 5)
Timeout::timeout(10) do
thread1 = T1.new {}
end
end
class T1 < Thread
def initialize
while super.status != "sleep"
puts "Thread 1"
sleep(1)
end
end
end
class T2
include java.lang.Runnable
def run wait_time
thread = Thread.new do
sleep(wait_time)
loop do
puts "Thread 2"
sleep(1)
end
end
end
def stop_thread(after_run_time)
sleep(after_run_time)
end
end
Я уже пробовал пару вещей, например:
# Used timeout
Timeout::timeout(10) do
thread1 = T1.new {}
end
# This kinda works, except that it terminates the program and therefore isn't the behavior
# I want.
Есть ли у кого-нибудь предложения о том, как 1. запустить поток, запустить его на некоторое время. 2. Запустите новый поток, запустите оба потока параллельно. 2. Остановите поток 1, но продолжайте запускать поток 2. Любые советы / предложения будут оценены.