Khi một thành viên Java cần phải được thread-safe, chúng ta làm như sau:Chức năng đồng bộ hóa tĩnh hoạt động như thế nào?
public synchronized void func() {
...
}
cú pháp tương đương này để:
public void func() {
synchronized(this) {
....
}
}
Nghĩa là, nó thực sự sử dụng this
cho một khóa.
Câu hỏi của tôi là, nếu tôi sử dụng synchronized
với một phương pháp static
, như sau:
class AA {
private AA() {}
public static synchronized AA getInstance() {
static AA obj = new AA();
return obj;
}
}
Trong trường hợp này, về những gì đang khóa làm cho phương pháp synchronized
?
Lớp AA sẽ bị khóa 'đồng bộ (AA.class) ', nhưng không có trường hợp –
Không phải là việc khai báo tĩnh của biến cục bộ' obj' lỗi cú pháp? – Thilo