java 多个lock对象_Java中的多个对象锁?

锁定私有字段变量(而不是使用锁定对象)是安全/可接受的做法吗?这样,我可以有不同的锁用于不同的目的.示例如下:

class Test {

private Integer x = 0;

private Integer y = 0;

public void incrementX() {

synchronized(x) {

x++;

}

}

public void decrementX() {

synchronized(x) {

x++;

}

}

public void incrementY() {

synchronized(y) {

y++;

}

}

public void decrementY() {

synchronized(y) {

y++;

}

}

或者我应该为每个想要锁定的私人会员拥有一个锁定对象?例:

class Test {

private final Object xLock = new Object();

private final Object yLock = new Object();

private Integer x = 0;

private Integer y = 0;

...

}

或者我应该只有一个通用锁并将其用于需要锁定的所有私有变量?例:

class Test {

private final Object objLock = new Object();

private Integer x = 0;

private Integer y = 0;

...

}


版权声明:本文为weixin_39878646原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。