Làm thế nào tôi có thể nhanh chóng chứng minh rằng lớp sau không an toàn cho luồng (vì nó sử dụng Khởi tạo Lười biếng và không sử dụng đồng bộ hóa) bằng cách viết một số mã? Nói cách khác, nếu tôi đang thử nghiệm lớp sau cho an toàn luồng, làm thế nào tôi có thể thất bại?Chứng minh mã sau không an toàn
public class LazyInitRace {
private ExpensiveObject instance = null;
public ExpensiveObject getInstance() {
if (instance == null)
instance = new ExpensiveObject();
return instance;
}
}
Sẽ thêm 'Thread.sleep' vào phần trợ giúp của hàm tạo? – Amarghosh
Bạn có * để chứng minh nó bằng cách sử dụng mã không, hoặc bạn có thể chứng minh nó theo những cách khác không? Một biểu đồ thực hiện đơn giản có thể được sử dụng để chứng minh nó không an toàn. – Herms
Có gì để chứng minh? Đây không phải là chủ đề an toàn. – ChaosPandion