====== 并发库的核心原理 ====== 见 [[并发更新之cas]] ====== 常用的数据结构 ====== ==== LinkedBlockingQueue ==== * 作用:线程间传递数据。一般用于协调生产者、消费者的处理速度 * 特性:队列满时,生产者阻塞;队列空时,消费者阻塞。 * 是否阻塞:阻塞 ==== CountDownLatch ==== * 作用:等待特定数量的资源被消费完毕 * 特性:只能使用一次。 * 是否阻塞:阻塞 ==== SynchronousQueue ==== * 作用:线程间传递数据 * 特性:生产的消息必须被消费。才能退出阻塞。队列长度为0 * 是否阻塞:阻塞 ==== LinkedTransferQueue ==== * 作用:线程间传递数据 * 特性:生产的消息必须被消费。才能退出阻塞。队列长度无限 * 是否阻塞:阻塞,非阻塞,超时等待。且性能比SynchronousQueue好 ==== Semaphore ==== * 作用:信号量计数 * 特性:指定某个资源最多同时被多少人消费。其他人等待 (等待分:公平,不公平) * 是否阻塞:阻塞