tips on executors and callable

executor在执行一个Callable的时候,如果使用了discard的策略,就永远不可能把Future的状态修改了complete,这会造成Future的get方法永久性的阻塞

可以使用超时机制或者是另起ScheduleExecutor来cancel掉这个Future,如果cancel掉,那么Future的get方法会抛出CancellationException异常,需要对这个异常做出处理

如果对Cancel掉了一个Future,如果Future还在队列中,就不会再执行,如果已经在执行,根据传入的mayInterruptIfRunning决定是否interrupt执行线程

posted @ 2019-01-24 10:42  TylerJin  阅读(117)  评论(0)    收藏  举报