|
|
1
3
我会在多处理器机器上运行几个小时,看看会发生什么(如果您使用Holder2,请取消睡眠)。这样的竞争条件可能很少见,或者在你的特定机器上并不存在——但至少要在一百万个案例中,通过数百万次的尝试来激发这种竞争条件。
|
|
|
2
1
正如BobbyShaftoe在另一篇文章中所说的,您不能仅仅依靠运行代码足够的次数来显示错误可能发生或不可能发生。如果您从程序集级别来考虑这个问题,那么对于n!=n因为呼叫太少,并且依赖于进程在一个非常精确的时间被关闭。 如果您希望能够显示并发系统是否可证明有效,那么最好使用标记的转换系统之类的方法对其进行建模。如果您对证明并发性或查找错误感兴趣,请尝试LTSA工具。 |
|
3
1
这里的问题不是Holder类本身,而是Holder没有正确发布。但是,通过声明n字段为final,可以使Holder不受不适当发布的影响,这将使Holder不可变;见第3.5.2节。 在此之前,它提到了以下代码,它是问题的主题:
因此,要重新创建它,您需要创建一个publisher类和两个线程,一个调用initialize,另一个调用assert。
下面是我的第一次尝试,但有一个更好的解释问题的时候 http://forums.oracle.com/forums/thread.jspa?threadID=1140814&tstart=195
|
|
|
4
0
我不认为断言错误可以在不修改
导致断言错误的唯一原因是在 部分构造对象 . 除了构造函数线程,线程如何引用部分构造的对象?好吧,只有在以下两种情况下才有可能:
请注意,本书中的以下代码不会发布任何部分构造的对象:
如果你拆开
如果您可以以合理的方式触发断言错误(例如反射不合理),请将其放在这里。我会投票给你。 |
|
|
5
-1
不能更改的值
|
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |