|
|
1
8
在特定对象(指定的静态锁对象或类对象)上进行同步(当静态方法声明为同步时会发生这种情况):
每种变体都有其优缺点;类上的锁定允许类之外的其他代码出于自身原因使用同一个锁(这允许它协调比您提供的更高级的同步),而
当然,您也可以使用
请注意,静态/全局锁并不是一个很好的方法—它意味着曾经创建的类的每个实例都将与其他每个实例绑定(这除了使测试或读取代码变得更困难之外,还可能严重损害可伸缩性)。我假设你这样做是为了同步某种全局状态?在这种情况下,我会考虑将全局/静态状态包装到类中,并实现每个实例而不是全局的同步。
现在
|
|
|
2
5
|
|
|
3
2
你可以用静电笔
|
|
|
4
2
在类的静态字段或类本身上同步:
|
|
|
5
1
两个线程都必须使用此结构
这种方法得益于这样一个事实:类本身是一个对象,因此它有一个监视器。那么你就不需要任何人工的静态实例了。 |
|
|
6
0
这没有内在的机制。创建自己的静态锁属性,并确保在每个方法中锁定和解锁它。别忘了例外-确保在“最终”部分解锁它。 |
|
|
7
0
“误用”类的运行时表示进行锁定。这是可能的,因为在Java中任何对象都可以用作互斥对象。 |
|
|
8
0
http://www.janeg.ca/scjp/threads/synchronization.html 讨论了实现它的几种方法。 一般来说,锁是禁止性的,会阻碍线程的好处。因此,关键代码应该尽可能地最小化。 您想要一个类杠杆锁来访问类的静态变量,还是为了保护对类的公共外部资源的访问?在这种情况下,在访问它时应该有一个单独的锁。 |
|
|
user29759326 · 如何返回递归函数中的最后一个值? 8 月前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 8 月前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 8 月前 |
|
|
rudraraj · java中未声明最终变量 9 月前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 9 月前 |