使用Java 10或11,是否可以使用某些构造来防止一段代码被当前线程的另一个任务抢占?
类似这样的东西:
synchronized(Thread.currentThread()){
doFirstCall();
doSecondCall();
doThirdCall();
}
我要完成的工作是确保doThirdCall()
之后doSecondCall()
之后和doFirstCall()
之后尽快发生-我想避免在此之前运行任何其他代码。从理论上讲,当前线程可能会被其他任务(回调或其他事件)抢占。
如果不清楚,我正在尝试实施:
doNotDisturb(() -> {
doFirstCall();
doSecondCall();
doThirdCall();
});
这意味着当线程处于“请勿打扰”块中时,没有任何东西可以抢占该线程。