Java多线程
风之遥
这个作者很懒,什么都没留下…
展开
-
一、Java多线程并发同步之Semaphore
一、多线程并发同步之Semaphore概念Semaphore是一种在多线程环境下使用的设施,该设施负责协调各个线程,用来管理资源,以保证它们能够正确、合理的使用公共资源的设施,也是操作系统中用于控制进程同步互斥的量。用我们常见的说法就是用来控制并发数。信号量是一个非负整数 。业务场景以售票窗口买票为例,假设火车站有两个售票窗口,一开始两个窗口都是没有人的,这是同时来了10个人买票,每次只...原创 2018-11-13 19:16:53 · 350 阅读 · 0 评论 -
二、Java多线程并发同步之CyclicBarrier
概述CyclicBarrier:可循环屏障,允许一组线程全部等待的同步辅助工具。一组线程互相等待,直到所有线程都到达某个公共屏障点(也可以叫同步点) 。它可以在等待线程之后重新使用。这个屏障之所以用循环修饰,是因为在所有的线程释放彼此之后,这个屏障是可以重新使用的 。CyclicBarrier支持一个可选的Runnable命令,在一组线程中的最后一个线程到达屏障点之后(但在释放所有线程之前),...原创 2018-11-19 18:55:53 · 237 阅读 · 0 评论 -
三、Java多线程并发同步之CountDownLatch
概述CountDownLatch:计数器,允许一个或多个线程一直等待,直到其他线程执行完后再执行。计数器的初始值为线程的数量 ,每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0时,它表示所有的线程已经完成了任务 。业务场景例如用户模拟多个用户并发访问某个API,测试API的性能;如有一个任务,需要等其他5个任务执行完成后,才能执行。实现CountDownLatch(i...原创 2018-11-19 18:56:52 · 309 阅读 · 0 评论 -
四、Java多线程并发同步之Exchanger
概述Exchanger:交换器,用于线程间交换数据,他提供一个同步点,在这个同步点,两个线程可以交换数据Exchanger通过exchange方法进行交换,如果线程A先执行exchange方法,他会一直等待线程B也执行exchange方法,当两个线程都到达同步点时,就会交互数据。业务场景有一个典型的例子,就是一手交钱,一手交货,假如A是绑匪,绑架了B的女儿,需要B交出一千万来换,双方约定在...原创 2018-11-19 18:58:12 · 215 阅读 · 0 评论 -
Java多线程框架Executor
Executor是java5之后提供的一个多线程框架java.util.concurrent,通过Executor提供的线程池来创建线程,他基于生产者-消费者模式,其提交任务的线程相当于生产者,执行任务的线程相当于消费者,并用Runnable来表示任务。Executor提供了4中创建线程池的方法:1、newSingleThreadExecutor():创建一个单线程化的线程池,它只会用唯一的工...原创 2018-11-19 19:00:44 · 248 阅读 · 0 评论