如何中断ComppletableFuture的底层执行
2022-09-01 12:10:24
我知道设计不会通过中断来控制其执行,但我想你们中的一些人可能会遇到这个问题。s 是编写异步执行的好方法,但是考虑到您希望在取消 future 时中断或停止底层执行的情况,我们该怎么做呢?或者我们必须接受任何取消或手动完成不会影响线程在那里完成它?CompletableFuture
CompletableFuture
CompletableFuture
在我看来,这显然是一项无用的工作,需要执行者工人的时间。我想知道在这种情况下,什么方法或设计可能会有所帮助?
更新
这是一个简单的测试
public class SimpleTest {
@Test
public void testCompletableFuture() throws Exception {
CompletableFuture<Void> cf = CompletableFuture.runAsync(()->longOperation());
bearSleep(1);
//cf.cancel(true);
cf.complete(null);
System.out.println("it should die now already");
bearSleep(7);
}
public static void longOperation(){
System.out.println("started");
bearSleep(5);
System.out.println("completed");
}
private static void bearSleep(long seconds){
try {
TimeUnit.SECONDS.sleep(seconds);
} catch (InterruptedException e) {
System.out.println("OMG!!! Interrupt!!!");
}
}
}