java并发工具 谁践踏了优雅 2022-02-05 07:59 156阅读 0赞 参考: [https://blog.csdn.net/coderinchina/article/details/54914852][https_blog.csdn.net_coderinchina_article_details_54914852] 常用: CountDownLatch semaphore 1.CountDownLatch是一个同步计数器 用于多个线程之间的同步计数,比如一个主线程要做n件事情,可以吧同步计数器传递给要做这些事情的子线程,子线程完成了,则计数器减1,主线程中计数器等待完成,则主线程返回结果,或者从子线程中获取他们的值。 2.Semaphore 控制某个资源的并发访问数量。 semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源.这个跟队列有点像,画图理解更直观 acquire():获取一个许可证, release():释放许可证,这时候有多余的线程就加入到线程池中 tryAcquire():尝试获取许可证 intavailblePermits():返回此信号量当前可用的许可证数 intgetQueueLength():返回正在等待获取许可证的线程数 hasQueuedThreads():是否有线程正在等待获取许可证 reducePermits(int reduction):减少reduction个许可证, getQueueThreads():返回所有等待获取许可证的线程集合 Semaphore类的构造函数中传入的数,表示同时并发访问控制在多少个线程 3.Exchanger exchanger是一个用于线程间协作的工具类,Exchanger用于进行线程间的数据交换,它提供一个同步点,在这个同步点,二个线程可以交换彼此的数据.在这二个线程通过exchange方法交换数据,如果第一个线程先执行exchange()方法,它会一直等待第二个线程也执行exchange方法,当二个线程都达到同步点时,这二个线程就可以交换数据,将本线程生产出来的数据传递给对方 4.CyclicBarrier CyclicBarrierr如果你在翻译的话是关卡,栅栏的意思,也就是被卡住在哪里,还可以把这个词扯开成cyclic和barrier,cyclic是循环的意思,barrier是障碍的意思,从字面意思连起来读就是可循环的障碍,翻译成java语言就是当有几个线程同时去访问,要阻塞,直到最后一个线程达到屏障时,程序才会继续执行, CyclicBarrier使用也很简单,首先它有2个构造函数: public CyclicBarrier(int parties):parties [https_blog.csdn.net_coderinchina_article_details_54914852]: https://blog.csdn.net/coderinchina/article/details/54914852
还没有评论,来说两句吧...