java线程问题

2025-03-26 04:09:30
推荐回答(1个)
回答1:

你需要解决线程间的同步问题:1.可见性,2.原子性。++不是一个原子操作,而你的程序中没有加锁,也没有将m声明为volatile类型,因此这两点在你的程序中都无法保证,m的最终结果就可能错误。

对于int型保证其可见性以及原子性可以简单使用java.util.concurrent中的AtomicInteger类实现:

private static AtomicInteger m = new AtomicInteger(0);
public void add(String s) throws InterruptedException {
    Thread.sleep(601);
    int i = m.incrementAndGet();
    System.out.println(s + "你是第" + i + "个调用Demo的线程");
}