发如雪1024 2020-11-13 13:42 采纳率: 0%
浏览 34

java 多线程的问题

public class SychronizdDemo {

    static Integer count=0;
    public static void incr(){
        synchronized (count) {
            try {
                Thread.sleep(1);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            count++;
        }
    }
    public static void main(String[] args) throws IOException, InterruptedException {
        for(int i=0;i<1000;i++){
            new Thread(()->SychronizdDemo.incr()).start();
        }
        Thread.sleep(5000);
        System.out.println("result:"+count);
    }
}

 

为什么sleep不会释放锁但是输出结果会是小于1000的数??

  • 写回答

2条回答 默认 最新

  • Happywzy~ 2020-11-13 15:14
    关注

    参考加锁的方式:

    https://www.cnblogs.com/revel171226/p/9411131.html

    你这是没有加锁成功,线程不安全

    评论

报告相同问题?