tips on executors and callable
executor在执行一个Callable的时候,如果使用了discard的策略,就永远不可能把Future的状态修改了complete,这会造成Future的get方法永久性的阻塞
可以使用超时机制或者是另起ScheduleExecutor来cancel掉这个Future,如果cancel掉,那么Future的get方法会抛出CancellationException异常,需要对这个异常做出处理
如果对Cancel掉了一个Future,如果Future还在队列中,就不会再执行,如果已经在执行,根据传入的mayInterruptIfRunning决定是否interrupt执行线程

浙公网安备 33010602011771号