假设我正在等待某个条件 A,那么实现它的最佳方法是什么?我有两个选择,但不知道哪个更好。
while(!A);
或者
while(!A)
Thread.onSpinWait();
假设我正在等待某个条件 A,那么实现它的最佳方法是什么?我有两个选择,但不知道哪个更好。
while(!A);
或者
while(!A)
Thread.onSpinWait();
最好不要使用
因为 在这种情况下,处理器无法识别隐含的等待,并将执行空操作。那些。在满足您的条件之前,您可能会在一个核心上获得 100% 的负载,这不是最佳选择。
选项
好一点,但也不好,因为 还是很多空头支票。
也许你应该看看触发器模型。例如,使用CompletableFuture。在一个线程中,您创建这个CompletableFuture,然后将它作为Future传递给另一个线程,然后启动另一个线程。粗略地说,它可能看起来像这样:
第二种选择。