class ThreadSafeClass extends Thread
{
private static int count = 0;
public synchronized static void increment()
{
count++;
}
public synchronized void decrement()
{
count--;
}
}
Bất cứ ai có thể giải thích tại sao lớp trên không an toàn luồng?
synchronized
chỉ nên sử dụng trong các phương thức tĩnh. Vì vậy, trong opionion của tôi ngay cả khi bạn loại bỏ increment
phương thức, nó vẫn không an toàn vì hai trường hợp (chỉ có quyền truy cập đồng bộ thông qua cùng một trường hợp) có thể gọi phương thức đồng thời.
increment
) thì nó sẽ an toàn. Hoặc nếu bạn đã sử dụng một số đối tượng khóa. Như tôi đã nói, tôi không biết về Java - nhận xét của tôi bắt nguồn từ kiến thức C #.