关于#改成#的问题,如何解决?(语言-java|开发工具-eclipse)

img


怎么样才可以改成从1数到50
关于#改成#的问题,如何解决?(语言-

dz 这个变量 要 进行同步

img

/**
 * @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;
            }
        }
    }
}


如有帮助,欢迎点赞+采纳哈!

在这里插入图片描述

本人的开源项目,欢迎star支持下!!!

你这个变量是共享变量 , 并且 i-- 操作不是原子性 会涉及到线程安全问题

可以考虑使用原子更新类

        // 吧你上边的int i 换成这个
        AtomicInteger atomicInteger = new AtomicInteger(1);
        // 线程方法run 里边使用这个来做 i--操作
       System.out.println(atomicInteger.getAndDecrement());