我正在编写一个调度程序,它接受一个Runnable
,它排队等待同步或异步执行。
我希望能够实现一个SomeScheduler.interrupt(int taskId)
,这会导致在线程中抛出InterruptedException()
。
这是可能的,还是我认为这一切都错了?
答案 0 :(得分:1)
Thread
可以被中断,Runnable
只是实现run方法的类
如果你想要中断执行你需要中断它的调用线程,那么它就不属于一个线程。
这样做的典型方法是使用ExecutorService
。当您向执行程序服务提交runnable或callable时,它将返回Future
,然后您可以使用Future#cancel
方法中断特定任务。
请注意,只是中断线程不会导致InterruptedException
被抛出,除非线程正在运行检查中断状态的代码并抛出InterruptedException
,例如Thread#sleep
方法。