说我有这样的:
public void foo(){
CompletableFuture.delayedExecutor(1, TimeUnit.MILLISECONDS).execute(() -> {
doSomethingA();
});
doSomethingB();
}
是否有任何保证,doSomethingB();永远doSomethingA之前运行();?东西告诉我,螺纹抢占,这是可能的,但可能性不大,这doSomethingA()可以先运行?
不,也不能保证,时有多个处理器的机器上,那doSomethingB()将doSomethingA之前一直执行()。虽然它可能会发生的时间99.999999999%。
我注意到你的一些意见“事件循环”的参考。在Java中有一个事件循环没有原生的概念一样存在,说,节点和Javascript。如果你有4个线程,拥有四个处理器,并提交4个任务,所有四个任务将并行运行。