JAVA 并发
java5以后,
synchronized和wait,notify;
改为了Lock和Condition.await,Condition.signal
semaphore 信号灯工具
维护当前访问的线程数;使用例子:能控制访问的最大线程数
cyclicbarrier 循环障碍工具
表示大家彼此等待,只有同时到达某一状态后,才一起进入下一个工作步骤。类似于任务调度的管理器啊。
countDownLatch等待N个任务分别执行完去唤醒他。
CountDownLatch如其所写,是一个倒计数的锁存器,当计数减至0时触发特定的事件。利用这种特性,可以让主线程等待子线程的结束。
Exchanger 用于交换数据
必须两个进程同时运行到同处时,才进行交换动作
可阻塞队列
ArrayBlockingQueue<E>类--FIFO阻塞队列; SynchronousQueue<E>--其中每个插入操作必须等待另一个线程的对应移除操作 ,反之亦然;
能够维持固定大小的队列,不能执行的会被阻塞住。put()放,take()取
同步集合
比如ConcurrentHashMap,CopyonWriteArrayList多线程下,能维护集合同步,比如iterator的行走,CopyonWriteSet,
HashSet就是用的HashMap,只是用的Key,没用它的value.