Không, constructor không thể synchronized trong Java. JVM đảm bảo chỉ một luồng có thể gọi constructor tại một thời điểm. Do đó không cần khai báo constructor là synchronized và nó là bất hợp pháp. Tuy nhiên, có thể dùng synchronized block bên trong constructor.
Nếu thử đặt từ khóa synchronized trước constructor, compiler báo lỗi: "error: modifier synchronized not allowed here".
Ví dụ
public class SynchronizedConstructorTest {
// khai báo constructor synchronized
public synchronized SynchronizedConstructorTest() {
System.out.println("Synchronized Constructor");
}
public static void main(String args[]) {
SynchronizedConstructorTest test = new SynchronizedConstructorTest();
}
}
Kết quả
SynchronizedConstructorTest.java:3: error: modifier synchronized not allowed here public synchronized SynchronizedConstructorTest() { ^ 1 error