09 2017 档案

摘要:对于AbstractQueuedSynchronizer衍生出来的并发工具类,这一篇再介绍俩。 场景1:有4个大文件的数据需要统计,最终将所有的统计结果进行加工,得到最后的分析数据。为了加速处理过程,当然是利用多线程:开启4个线程去分别统计每个文件的数据,开启1个线程对之前4个线程的数据加工。 这里 阅读全文
posted @ 2017-09-11 09:56 大诚挚 阅读(1444) 评论(0) 推荐(2)
摘要:synchronized的语义是互斥锁,就是在同一时刻,只有一个线程能获得执行代码的锁。但是现实生活中,有好多的场景,锁不止一把。 比如说,又到了十一假期,买票是重点,必须圈起来。在购票大厅里,有5个售票窗口,也就是说同一时刻可以服务5个人。要实现这种业务需求,用synchronized显然不合适。 阅读全文
posted @ 2017-09-10 13:33 大诚挚 阅读(2125) 评论(0) 推荐(2)
摘要:首先试想一个场景: 多个线程都要访问数据库,先要获得一个Connection,然后执行一些操作。为了线程安全,如果用synchronized锁定一个Connection对象,那么任何时候,都只有一个线程能通过Connection对象操作数据库。这样的话,程序的效率太低。反过来,如果每次需要Conne 阅读全文
posted @ 2017-09-03 12:02 大诚挚 阅读(1023) 评论(0) 推荐(1)
摘要:说Atomic类之前,先聊一聊volatile。 对volatile的第一印象就是可见性。所谓可见性,就是一个线程对共享变量的修改,别的线程能够感知到。 但是对于原子性,volatile是不能保证的。来看看自增操作的问题: i++ 在多线程环境下,是不能保证最终的结果正确的。比如某个时刻,i=5,线 阅读全文
posted @ 2017-09-02 11:33 大诚挚 阅读(2291) 评论(3) 推荐(2)