-3
私は以下のコードを実行して20000とカウントします。私はカウントをvolatileと宣言しましたが、出力は常に適切ではありません。揮発性と同期の差
package threading;
public class Demo5 {
private volatile int count =0;
public static void main(String[] args){
Demo5 d = new Demo5();
d.doWork();
}
public void doWork(){
Thread t1 = new Thread(new Runnable() {
public void run() {
for(int i=0; i<10000; i++){
count++;
}
}
});
Thread t2 = new Thread(new Runnable() {
public void run() {
for(int i=0; i<10000; i++){
count++;
}
}
});
t1.start();
t2.start();
try{
t1.join();
t2.join();
}
catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(count+" is count");
}
}
後で同期メソッド内に入れて同期をとってみましたが正常に動作していました。
public synchronized void increment(){
count++;
}
私たちがいつ揮発性のために移動する必要があるのか、同期するタイミングを教えてもらえますか?
'count()'メソッドは何をしますか? –
これはタイプミスです。修正されました。 –