Я читаю книгу Java Concurrency in Practice
session 4.3.5
@ThreadSafe
public class SafePoint{
@GuardedBy("this") private int x,y;
private SafePoint (int [] a) { this (a[0], a[1]); }
public SafePoint(SafePoint p) { this (p.get()); }
public SafePoint(int x, int y){
this.x = x;
this.y = y;
}
public synchronized int[] get(){
return new int[] {x,y};
}
public synchronized void set(int x, int y){
this.x = x;
this.y = y;
}
}
Я не знаю, где Он говорит
Частный конструктор существует, чтобы избежать условия гонки, которое произойдет, если конструктор копирования был реализован как это (p.x, p.y); это пример идиомы захвата частного конструктора (Bloch and Gafter, 2005).
Я понимаю, что он предоставляет getter для извлечения как x, так и y сразу в массиве вместо отдельного getter для каждого, поэтому вызывающий будет видеть постоянное значение, но почему частный конструктор? что здесь трюк