dz 这个变量 要 进行同步
/**
* @author huazie
* @version 2.0.0
* @since 2.0.0
*/
public class Test {
public static void main(String[] args) {
new Thread(new MyThread(), "小明").start();
new Thread(new MyThread(), "小华").start();
}
}
class MyThread implements Runnable {
static int dz = 1;
static Object obj = new Object();
@Override
public void run() {
while(true) {
if (dz <= 50) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
}
synchronized (obj) {
if (dz <= 50) {
System.out.println(Thread.currentThread().getName()+ "数到了第" + (dz++) + "棵");
}
}
}
if (dz > 50) {
break;
}
}
}
}
如有帮助,欢迎点赞+采纳哈!
你这个变量是共享变量 , 并且 i-- 操作不是原子性 会涉及到线程安全问题
可以考虑使用原子更新类
// 吧你上边的int i 换成这个
AtomicInteger atomicInteger = new AtomicInteger(1);
// 线程方法run 里边使用这个来做 i--操作
System.out.println(atomicInteger.getAndDecrement());