直接将代码传递到线程中与使用 CompletableFuture 相比有什么优势?
VS
Thread thread = new Thread(() -> {do something});
thread.start();
VS
CompletableFuture<Void> cf1 =
CompletableFuture.runAsync(() -> {do something});
thread.start
方法,还需要进行哪些管理工作? - Sagarstop
、suspend
或resume
。当然,除了创建之外,你不必做任何事情,但如果你热衷于低级线程处理(关注“如何”而不是“什么”),你也可以这样做。对于CompletableFuture,你不能这样做,因为所有的工作都已经为你完成,你操作的是高级API并发(关注“什么”而不是“如何”)。 - Gerald Mücken
个线程全部都在等待某个(不存在的)n+1
个线程应该做的事情是没有意义的。当然,这种情况通常被抽象层和库隐藏起来。但是,手动创建新线程可能是完全可以的-即使您是“有经验”的人。 - Marco13