|
|
1
1
我很确定你是安全的。但你的论点遗漏了一些重要的细节。 你的陈述有问题:
这表明人们对事物的运作方式存在误解。 线程安全不是非黑即白的情况 。不能说“此集合是线程安全的”和“此集合不是线程安全的。”。线程安全不在于对象/类,而在于操作。有些操作可以是线程安全的,而其他操作则不是。例如,琐碎的是:
不是线程安全的。无论您的底层线程如何安全
COWList的“线程安全”是在另一个线程迭代列表时修改列表,这是由于它的基本属性(因此,“写时复制”部分,确保所有迭代器都不受其底层列表被修改的影响,因为这永远不会发生)。同样是线程安全的是两个线程试图同时添加到它。
这个
在一个同步块退出和另一个线程稍后进入同一个锁对象之间建立了Happens Before关系(HB是 必修的 对于代码a对字段所做的任何改变,代码B肯定是可观察到的;如果没有HB关系,JVM可以自由地使该字段写入可见 是否 -任何一种行为都是可以接受的,因此,如果您的代码依赖于此,那么您就编写了一个bug。一个讨厌的,非常非常难测试的!)
有了锁,“呼叫”的行为
调查时有点棘手
哦!未锁定
|
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |