Thread、synchronizedについて質問があります。 public class Test extends Thread{ private int i, j; public synchronized void run(){ for( int count = 0; count < 2; count++ ){ i++; j++; System.out.println(" i=" + i + ":j=" + j ); } } public static void main(String[] args){ new Test().start(); new Test().start(); } } このコードの実行結果を答えよっていうような問題があって、 選択肢の中に、 B i=1:j=1 i=2:j=2 i=1:j=1 i=2:j=2 C iとjの値は出力されるが、表示順は一意ではない この2つがあって、Bが正解になってて、 解説には、run()メソッドをsynchronized指定しているため、run()メソッド実行中は他に制御が移ることなく処理される。 とあるんですが、これ違いますよね? うまく説明できないんですが、このときって別々のオブジェクトのrunにロックがかかってるんですよね? forループの回数増やして試しても、Cの結果になりました