摘要:
10.1CountDownLatch 计数器 new CountDownLatch(2)countDownLatch.countDown(); //-1 countDownLatch.await();//当计数器为0时返回 和join之间的区别 不用等到子进程全部执行完毕之后再返回 是基于AQS实现 阅读全文
摘要:
8.1介绍 线程池里面的线程是可以复用的 大量异步任务是线程池表现良好的性能 线程池提供了一种资源限制和管理的手段 线程池提供了许多可调参数和可扩展接口, 但是可以使用更加方便的Executors的工厂方法创建线程,不建议 8.2类图分析 Executors是一个工具类,提供了好多静态方法 线程池状 阅读全文
摘要:
7.1ConcurrentLinkedQueue 线程安全的无界非阻塞队列,其底层数据结构使用单向链表实现,对于出队和入队操作使用CAS来实现线程安全 新元素会被插入队列的末尾 队列头获取元素 offer操作 添加一个元素 add操作 添加一个元素,底层使用offer() poll操作 删除一个元素 阅读全文
摘要:
6.1LockSupport 跟wait()不同! 引入了一个许可证的概念。 void park()方法 检测此时的线程是否拥有许可证,有的话。就通过,没有的话就阻塞。 LockSupport.park():在哪儿调用就是检查哪个线程 void unpark(Thread thread)方法 Loc 阅读全文
摘要:
5.1CopyOnWriteArrayList 读:都是旧数组里面的值 写:加ReetrantLock,然后复制一份,在复制的一份上修改;最后将复制的一份设置成主本。 源码就没必要看了,太简单了! 弱一致性问题 简单说就是,修改时,都是复制的。那么读的时候很可能读到修改之前的值,这就是弱一致性问题 阅读全文