
java并发编程的艺术
文章平均质量分 89
阿登灯
不积跬步无以至千里!诸君共勉之!
展开
-
【Java并发编程的艺术】【学习笔记】锁
3、锁 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源(但是有些锁可以允许多个线程并发的访问共享资源,比如读写锁)。 Java5之前,Java程序是靠synchronized关键字实现锁的功能,之后,并发包新增了Lock接口用来实现锁功能,使用时需要显示的获取和释放锁。虽然它缺少了隐式释放锁的便捷性,但是却拥有了锁获取和释放的可操作性、可中断的获原创 2018-01-02 20:42:36 · 318 阅读 · 0 评论 -
【Java并发编程的艺术】【学习笔记】并发工具类
4、并发工具类4.1、CountDownLatch CountDownLatch允许一个或多个线程等待其他线程完成操作。 假设有这样一个需求:我们需要解析一个Excel里多个sheet的数据,此时可以考虑使用多线程,每个线程解析一个sheet里的数据,等待所有的sheet都解析完之后,程序需要提示解析完成。在这个需求中,要实现主线程等待所有线程完成sheet的解析操作,最简单的做法是使用原创 2018-01-03 21:59:13 · 640 阅读 · 0 评论 -
【Java并发编程的艺术】【学习笔记】并发基础
2、并发基础2.1、AQS 队列同步器AbstractQueuedSynchronizer(以下简称同步器),是用来构建锁或者其他同步组件的基础框架,它使用了一个int成员变量表示同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作,并发包的作者(Doug Lea)希望他能够成为实现大部分同步需求的基础。 同步器的设计是基于模板方法模式的,主要使用方式是继承,子类通过继承同步器并原创 2017-12-28 21:41:11 · 371 阅读 · 0 评论 -
【Java并发编程的艺术】【学习笔记】ThreadLocal与Fork/Join
5、其他5.1、ThreadLocal 一种解决多线程环境下成员变量的问题的方案,但是与线程同步无关。其思路是为每个线程创建一个单独的变量副本,从而每个线程都可以独立地改变自己所拥有的变量副本,而不会影响其他线程对应的副本。 ThreadLocal不是用于解决共享变量的问题的,也不是为了协调线程同步而存在,而是为了方便每个线程处理自己的状态而引入的一种机制。Thre原创 2018-01-04 21:29:31 · 1014 阅读 · 1 评论 -
【Java并发编程的艺术】【学习笔记】Java并发集合
8、阻塞队列 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加操作支持阻塞的插入和移除方法。 1)支持阻塞的插入方法:意思是当队列满时,队列会阻塞插入元素的线程,直到队列不满。 2)支持阻塞的移除方法:意思是在队列为空时,获取元素的线程会等待队列变为非空。 阻塞队列常用于生产者和消费者的场景。插入和移除操作的4中处理方式原创 2018-01-19 20:47:23 · 214 阅读 · 0 评论