如何告诉Runnable抛出InterruptedException?

时间:2016-06-27 02:45:05

标签: java multithreading interrupt runnable

我正在编写一个调度程序,它接受一个Runnable,它排队等待同步或异步执行。

我希望能够实现一个SomeScheduler.interrupt(int taskId),这会导致在线程中抛出InterruptedException()

这是可能的,还是我认为这一切都错了?

1 个答案:

答案 0 :(得分:1)

Thread可以被中断,Runnable只是实现run方法的类 如果你想要中断执行你需要中断它的调用线程,那么它就不属于一个线程。 这样做的典型方法是使用ExecutorService。当您向执行程序服务提交runnable或callable时,它将返回Future,然后您可以使用Future#cancel方法中断特定任务。
请注意,只是中断线程不会导致InterruptedException被抛出,除非线程正在运行检查中断状态的代码并抛出InterruptedException,例如Thread#sleep方法。