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