私はマルチスレッドが初めてで、同時に実行されているスレッドをインクリメントして変数を出力することにより、1〜10000の数字を出力するこのコードを書きました。
私が使用しているコードは次のとおりです。
package threadtest;
public class Main{
static int i=0;
static Object lock=new Object();
private static class Incrementer extends Thread{
@Override
public void run(){
while (true){
synchronized(lock){
if (i>=10000)
break;
i++;
System.out.println(i);
}
}
}
}
public static void main(String[] args) {
new Incrementer().start();
new Incrementer().start();
new Incrementer().start();
new Incrementer().start();
new Incrementer().start();
new Incrementer().start();
}
}
これは機能します。出力を確認するテスト プログラムを作成しました。印刷された数字は、正確に 1 ~ 10000 の順序で表示されます。
私の質問は次のとおりです。それsynchronized
は構文糖衣にすぎないと聞いたことがあります。しかし、私はそれを使用せずに成功した結果を達成することはできないようです. 私は何が欠けていますか?