以下のコード スニペットでは、doThings() メソッドを static として宣言すると、クラスがスレッド セーフになります。この理由は、複数の TestSeven スレッドが開始され、x が静的変数であるため、競合状態が発生する可能性があるためですか?
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();
}
}