page contents

多线程的原理分析(2019.05.11)的课后作业题2

Pack 发布于 2020-02-13 21:24
阅读 428
收藏 0
分类:Java开发


下面这个程序的最终结果为什么小于1000?


   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(()->SynchronizedDemo.incr()).start();

        }

        Thread.sleep(5000);

        System.out.println("result:"+count);

    }

}

353
Pack
Pack

Integer是不可变对象,作为锁是锁不住内容的。比如说为1的时候内存地址是0x0001,为2的时候内存地址变成了0x0002(这个内存地址只是说明演示),作为锁来说,一会是0x0001,过一会是0x0002,所以是锁不住里面的内容

请先 登录 后评论