19 java并发包提供了哪些工具类 1 Java.util.concurrent及其子包,包含了java的各种并发工具类 1.1 提供了比synchronized更高级的同步结构 ,包括CountDownLatch,CyclicBarrier,Semaphore,可以实现更加丰富的线程操作 1.2 各种线程安全的容器 ConcurrentHashMap,ConcurrentSkipListMap,线程安全的数组 CopyOnWriteArrayList 1.3 各种并发队列BlockingQueue实现 ,比如ArrayBlockingQueue,SynchronousQueue或针对特定场景的PriorityBlockingQueue,1.4 强大的executor框架,可以创建不同类型的线程池和调度任务,不用自己创建。2 并发类的实际应用 CountDownLatch 允许一个或者多个线程等待某些操作完成,CyclicBarrier,允许多个线程等待达到某个屏障 ,Semphore java版本的信号量实现,2.1 Semphore通过限制一定数量的多个permit的方式,来达到限制统一资源访问的目的,Semphore是通过acquire和release,如果初始值设置为1,则1个线程通过acquire进入互斥状态,2.2 CountDownLatch和CyclicBarrier区别 CountDownLatch是不可以被重置的,CuclicBarrier可以被重置,CountDownLatch的基本操作组合是countdown/await,调用 await的线程阻塞等待countDown足够的次数,不管一个还是多个线程,足够的次数即可。CyclicBarrier的组合就是await,当所有的伙伴都调用完了await,才会继续进行任务,并进行重置。CyclicBarrier 侧重的是线程,典型应用场景是等待比并发线程结束。Cyclic反应的是线程并发运行时的协调
展开