diff --git a/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb b/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb index b2bc69a6e..96991a78e 100644 --- a/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb +++ b/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb @@ -46,6 +46,7 @@ def shutdown def kill synchronize do @executor.shutdownNow + wait_for_termination nil end end diff --git a/lib/concurrent-ruby/concurrent/executor/timer_set.rb b/lib/concurrent-ruby/concurrent/executor/timer_set.rb index 759dce093..b936c7b2f 100644 --- a/lib/concurrent-ruby/concurrent/executor/timer_set.rb +++ b/lib/concurrent-ruby/concurrent/executor/timer_set.rb @@ -61,6 +61,7 @@ def post(delay, *args, &task) # not running. def kill shutdown + @timer_executor.kill end private :<< @@ -122,7 +123,9 @@ def remove_task(task) def ns_shutdown_execution ns_reset_if_forked @queue.clear - @timer_executor.kill + @condition.set + @condition.reset + @timer_executor.shutdown stopped_event.set end diff --git a/spec/concurrent/executor/timer_set_spec.rb b/spec/concurrent/executor/timer_set_spec.rb index a386553b4..f4169473d 100644 --- a/spec/concurrent/executor/timer_set_spec.rb +++ b/spec/concurrent/executor/timer_set_spec.rb @@ -244,7 +244,7 @@ module Concurrent expect(task.schedule_time).to eq expected end - it 'reschdules a pending and unpost task when given a valid time' do + it 'reschedules a pending and unpost task when given a valid time' do initial_delay = 10 rescheduled_delay = 20 task = subject.post(initial_delay){ nil }