相关疑难解决方法(0)

lock对同步和使用它作为锁有什么区别?

我知道同步方法和同步块之间的区别,但我不确定同步块部分.

假设我有这个代码

class Test {
  private int x=0;
  private Object lockObject = new Object();

  public void incBlock() {
    synchronized(lockObject) {
      x++;
    }
    System.out.println("x="+x);
  }

  public void incThis() {  // same as synchronized method
    synchronized(this) {
      x++;
    }
    System.out.println("x="+x);
  }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,使用lockObject和使用作为锁有什么区别?对我来说似乎是一样的..

当您决定使用synchronized块时,如何确定哪个对象是锁?

java concurrency locking synchronized synchronized-block

47
推荐指数
3
解决办法
3万
查看次数

锁定可变对象 - 为什么它被认为是一种不好的做法?

看到这个答案.它说:

六个非常糟糕的例子;

...

锁定可变字段.例如synchronized(object){object = ...; }

锁定可变字段有什么问题?如果object被声明为final但不是不可变类?

java concurrency multithreading synchronized thread-safety

8
推荐指数
2
解决办法
1817
查看次数