第一次写,错的地方,希望大家指出,谢谢! wait ,notify都是Object中的方法: 1 ,他们必须配合synchronized关键字使用 2,wait方法释放锁,notify方法不释放锁 需求: 一个集合,2个线程,一个线程往集合中添加10个元素,另一个线程判断,如果集合中正好为5个元素时 ...
分类:
编程语言 时间:
2018-02-01 23:07:08
阅读次数:
198
package com.thread.test.Lock; import java.util.Random; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import... ...
分类:
编程语言 时间:
2018-01-23 16:44:46
阅读次数:
225
CountDownLatch、Semaphore(信号量)和ReentrantReadWriteLock.ReadLock(读锁)都采用AbstractOwnableSynchronizer中共享排队的方式实现。 关于AbstractQueuedSynchronizer中的独占锁和共享锁,请参考Re ...
分类:
其他好文 时间:
2018-01-22 16:09:23
阅读次数:
157
前序: 上周测试给开发的同事所开发的模块提出了一个bug,并且还是偶现。 经过仔细查看代码,发现是在业务中启用了多线程,2个线程同时跑,但是新启动的2个线程必须保证一个完成之后另一个再继续运行,才能消除bug。 什么时候用? 多线程是在很多地方都会用到的,但是我们如果想要实现在某个特定的线程运行完之 ...
分类:
编程语言 时间:
2018-01-22 13:00:06
阅读次数:
136
一、CountDownLatch介绍 CountDownLatch是在jdk1.5被引入的,它主要是通过一个计数器来实现的,当在初始化该类的构造函数时,会事先传入一个状态值,之后在执行await方法后, 在这个状态值为0之前,当前线程(指的是调用await的线程)会一直等待。它内部使用了AQS来实现 ...
分类:
其他好文 时间:
2018-01-20 12:47:39
阅读次数:
164
在JDK的并发包里提供了几个非常有用的并发工具类。CountDownLatch、CyclicBarrier和Semaphore工具类提供了一种并发流程控制的手段,Exchanger工具类则提供了在线程间交换数据的一种手段。 1等待多线程完成的CountDownLatch CountDownLatch ...
分类:
其他好文 时间:
2018-01-06 21:09:19
阅读次数:
150
(一)CountDownLatch CountDownLatch 的作用和 Thread.join() 方法类似,可用于一组线程和另外一组线程的协作。例如,主线程在做一项工作之前需要一系列的准备工作,只有这些准备工作都完成,主线程才能继续它的工作。这些准备工作彼此独立,所以可以并发执行以提高速度。在 ...
分类:
其他好文 时间:
2017-12-27 22:34:14
阅读次数:
183
http://www.jianshu.com/p/fe027772e156 什么是AQS AQS即是AbstractQueuedSynchronizer,一个用来构建锁和同步工具的框架,包括常用的ReentrantLock、CountDownLatch、Semaphore等。 AQS没有锁之类的概念 ...
分类:
其他好文 时间:
2017-12-22 15:02:27
阅读次数:
150
1、倒计时器CountDownLatch CountDownLatch是一个多线程控制工具类。通常用来控制线程等待,它可以让一个线程一直等待知道计时结束才开始执行 构造函数: public CountDownLatch(int count) //count 计数个数 例如:在主线程中启动10个子线程 ...
分类:
编程语言 时间:
2017-12-19 15:10:50
阅读次数:
187
网上没找到好用的,自己实现了一个。 测试: ...
分类:
其他好文 时间:
2017-12-15 15:06:59
阅读次数:
156