(ロック オブジェクトを使用する代わりに) プライベート フィールド変数をロックすることは安全で許容可能な方法ですか? このようにして、さまざまな目的のためにさまざまなロックを設定できます。以下の例:
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;
...
}
それとも、一般的なロックを 1 つだけ用意し、それをロックが必要なすべてのプライベート変数に使用する必要がありますか? 例:
class Test {
private final Object objLock = new Object();
private Integer x = 0;
private Integer y = 0;
...
}