私は次のコードを持っている:スレッドと同期する方法
public class MyThread extends Thread {
private int i;
public static int sum=0;
public MyThread(int k){
i=k;
}
public static void main(String[] args) throws InterruptedException{
Thread t=new MyThread(1);
Thread s=new MyThread(2);
Thread p=new MyThread(3);
t.start();
s.start();
}
public synchronized void doSomething(){
for(int i=0; i<100000; i++){
System.out.println(this.i);
}
}
@Override
public void run() {
doSomething();
}
}
のdoSomethingが同期されています。なぜ出力はランダムですか? 私は、synchronizedメソッドはsynchronizedブロックと同じであるが、ブロックの出力はsyncであり、メソッドはそうでないと仮定します。
「ランダム」とはどういう意味ですか?コードから、3つのスレッドが実行されているように見え、それぞれにプロセッサ時間が割り当てられ、出力はインターリーブされます。 – Nick
@mary:私の例を見てください! –