Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Constructor có thể synchronized trong Java không?

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