我是多线程的新手,我编写了这段代码,它通过同时运行的线程递增并打印一个变量来打印数字 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
只是语法糖。但是如果不使用它,我似乎无法取得成功的结果。我错过了什么?