一般に、Java開発者はすべて、メソッドの実行を1つずつ制御するために「同期」を使用する必要があることを知っていますが、次のコードは静的変数を選択して制御し、メソッドがエラーであることを示すために条件をシミュレートすることはできません。 、1000を超える値を出力するようにコードを変更するにはどうすればよいですか?
public class ThreadJunk implements Runnable{
private Info info;
public ThreadJunk(Info info) {
this.info = info;
}
public static void main(String args[]) throws Exception {
for(int j=0;j<100;j++) {
Info ii = new Info();
for(int i=0;i<1000;i++) {
Thread t = new Thread(new ThreadJunk(ii));
t.start();
}
System.out.println(ii.getValue());
}
}
@Override
public void run() {
info.addValue();
}
}
class Info {
public static boolean IS_LOCKED = false;
private int value = 0;
public void addValue() {
if(IS_LOCKED)
return;
IS_LOCKED = true;
value++;
IS_LOCKED = false;
}
public int getValue() {
return value;
}
}
私のコンピューターでは、1000を超える結果が得られたことはありません。