小编roo*_*ron的帖子

差异b/w内在锁定,客户端锁定和外部锁定?

b/w内在锁定,客户端锁定和外部锁定有什么区别?

创建线程安全类的最佳方法是什么?

哪种锁定更喜欢?为什么?

java multithreading

9
推荐指数
2
解决办法
5349
查看次数

在java多线程中使用"私有最终对象"锁定有什么用?

在java多线程中使用"私有最终对象"锁定有什么用?

据我所知,我认为要使类成为线程安全,我们应该使用内部锁定,我们将所有方法标记为同步并使用"this"将它们锁定在Object的监视器上?或者我们可以用方法中的私有最终Object锁替换在类的"this"上标记为synchronized的方法,以锁定通用Object锁以使其线程安全吗?

仅举例来说使用内部锁定的代码:

public class Counter{

 // Locks on the object's monitor
 public synchronized void changeValue() { 
   // ...
 }
Run Code Online (Sandbox Code Playgroud)

}

我们可以使用以下外部锁替换上面的代码:

public class Counter{
 private final Object lock = new Object(); // private final lock object

  public void changeValue() {
   synchronized (lock) { // Locks on the private Object
  // ...
       }
  }
}
Run Code Online (Sandbox Code Playgroud)

是否建议使用上述外部锁而不是使用内部锁定来使类成为线程安全的?如果我的理解不对,请纠正我?

java multithreading

7
推荐指数
1
解决办法
2581
查看次数

标签 统计

java ×2

multithreading ×2