我有一个线程,它等待布尔值更改,如下所示:
while(!value)
{
Thread.sleep(1000)
}
// Do some work after change of the value
这不是我首选的方法,因为这会导致大量CPU消耗。
有什么方法可以阻止线程,直到布尔值更改其状态?
这不是我首选的方法,因为这会导致大量CPU消耗。
如果这实际上是您的工作代码,则只需保留该代码即可。每秒检查一次布尔值不会导致可测量的CPU负载。没有任何。
真正的问题是检查该值的线程可能由于缓存而没有看到任意长时间的更改。为了确保该值始终在线程之间同步,您需要将volatile关键字放入变量定义中,即
private volatile boolean value;
请注意,将访问置于一个synchronized
块中,例如使用其他答案中描述的基于通知的解决方案时,将具有相同的效果。
我有一个学校作业,要做一个程序,结果要么正确,要么错误。这关系到一年是否是闰年。目前的问题是,我使用的是公共静态布尔值,而不是公共布尔值。这是我的代码: 现在int年是2000年,但是规则是这样的:闰年是一年,可以除以4,除非这一年是一个新世纪的开始(1700, 1800, 1900.....)。所以即使你可以把1900除以4,你也不能把它除以400,所以这是错误的。所以再一次问一个问题:我需要做
我想更改“成员”数据框中“成功”列的布尔值。具体来说,我想把真正的价值观改为“成功”,把错误的价值观改为“失败”。你知道怎么做吗? 代码:
问题内容: 我有一个MPClient和MultiplayerMatch类。MultiplayerMatch在其构造函数中创建一个MPClient可运行线程。 为了避免数据溢出,我在MultiplayerMatch中有一个名为“ moved”的布尔值,当播放器移动时,它会变为true。 在updateMatch方法中,如果有任何播放器移动,则“ moved”变为true,这允许MPClient输入i
因此,我的任务是制作多个“动物”类,并在空白绘图面板上运行它们。每只动物都以特定的方式移动,当它们与不同的动物重叠时,“入侵”的动物获胜,而另一只动物被移走。我的老师告诉我使用一个布尔值,如果两个动物在相同的坐标上交叉,则返回true(动物死亡),而在所有其他情况下返回false。 我在动物类上设置了一个自动返回false的布尔方法“isSameLoc()”,但是我不知道当动物在主客户端类中重叠时
土耳其政府于2015年9月29日宣布,土耳其将于2015年3月29日至2015年11月8日进入夏令时 但似乎是错误的时区(协调世界时02:00)伊斯坦布尔 2015年 夏令时于2015年3月29日凌晨2:00开始< br >夏令时于2015年10月25日凌晨3:00结束 微软何时发布热修复补丁?
到目前为止我们看到的类型都能表示很大范围的数据,整数多的是,而浮点数更多。相对而言,字符集的规模小的多。C++中还有一个类型表示的范围更小,即布尔类型,它只能表示true和false两个值。 虽然没提到过该类型,但我们前面几章中实际已经使用过布尔值了。if语句和while语句中的条件就是布尔表达式。比较操作符的结果也是布尔值。例如: if (x == 5) { // 进行某些处理 } ==操