说我有这个:
public void foo(){
CompletableFuture.delayedExecutor(1, TimeUnit.MILLISECONDS).execute(() -> {
doSomethingA();
});
doSomethingB();
}
是否可以保证doSomethingB();将始终在doSomethingA();之前运行?有人通过线程抢占告诉我,虽然不太可能,但doSomethingA()可以首先运行?
答案 0 :(得分:1)
不,不能保证在具有多个处理器的计算机上,doSomethingB()将始终在doSomethingA()之前执行 。虽然很可能会在99.999999999%的时间发生。
我在您的一些评论中注意到对“事件循环”的引用。在Java中,没有像Node和Javascript这样的事件循环本机概念。如果您有4个线程,4个处理器并提交了4个任务,则所有4个任务将并行运行。