Trong đoạn mã dưới đây, khai báo phương thức doThings() là static sẽ làm cho lớp thread-safe. Có phải lý do cho điều này là nếu nhiều chuỗi TestSeven được bắt đầu và vì x là một biến tĩnh, một điều kiện chủng tộc có thể xảy ra?Tại sao mã này không phải là chuỗi an toàn?
public class TestSeven extends Thread{
private static int x;
public synchronized void doThings(){
int current = x;
current++;
x = current;
}
public void run(){
doThings();
}
public static void main(String args[]){
TestSeven t = new TestSeven();
Thread thread = new Thread(t);
thread.start();
}
}
Btw bạn vượt qua một TestSeven là một Chủ đề làm đối số cho hàm tạo Thread. Điều này làm việc vì Thread IS-A Runnable, nhưng không được khuyến khích, bạn nên làm cho TestSeven thực hiện Runnable –