确保代码中后CompletableFuture回调执行

问题描述 投票:1回答:1

说我有这样的:

public void foo(){
     CompletableFuture.delayedExecutor(1, TimeUnit.MILLISECONDS).execute(() -> {                 
         doSomethingA();                
      });       
      doSomethingB();        
}

是否有任何保证,doSomethingB();永远doSomethingA之前运行();?东西告诉我,螺纹抢占,这是可能的,但可能性不大,这doSomethingA()可以先运行?

java concurrency vert.x preemption
1个回答
1
投票

不,也不能保证,时有多个处理器的机器上,那doSomethingB()将doSomethingA之前一直执行()。虽然它可能会发生的时间99.999999999%。

我注意到你的一些意见“事件循环”的参考。在Java中有一个事件循环没有原生的概念一样存在,说,节点和Javascript。如果你有4个线程,拥有四个处理器,并提交4个任务,所有四个任务将并行运行。

© www.soinside.com 2019 - 2024. All rights reserved.