Java线程并发工具类

1.CountDownLatch

  • 作用:是一组线程等待其他的线程完成工作以后再执行,加强版join
    await用来等待,countDown负责计数器的减一
    ch1 数据库连接池例子中有用到
    UseCountDownLatch.java

2.CycliBarrier

  • 让一组线程达到某个屏障,被阻塞,一直到组内最后一个线程达到屏障时,屏障开放,所有被阻塞的线程会继续运行CyclicBarrier(int parties)
    CyclicBarrier(int parties, Runnable barrierAction),屏障开放,barrierAction定义的任务会执行
    UseCyclicBarrier.java
  • CountDownLatch和CyclicBarrier辨析
    1、countdownlatch放行由第三者控制,CyclicBarrier放行由一组线程本身控制
    2、countdownlatch放行条件>=线程数,CyclicBarrier放行条件=线程数

3.Semaphore

  • 控制同时访问某个特定资源的线程数量,用在流量控制
    注意对可用资源、已经占用的资源都需要进行流量控制,因为这两部分都是共享的!
    Semaphore 数据库连接池流控实现
    流控实现类DBPoolSemaphore.java
    测试类AppTest.java

4.Exchanger

  • 两个线程间的数据交换
    UseExchanger.java

5.Callable、Future和FutureTask

Java线程并发工具类_第1张图片
  • isDone,结束,正常还是异常结束,或者自己取消,返回true;
    isCancelled 任务完成前被取消,返回true;
  • cancel(boolean):
    1、 任务还没开始,返回false
    2、 任务已经启动,cancel(true),中断正在运行的任务,中断成功,返回true,cancel(false),不会去中断已经运行的任务
    3、 任务已经结束,返回false
  • 使用示例:包含图片和文字的文档的处理:图片(云上),可以用future去取图片,主线程继续解析文字。
    FutureTask示例UseFuture.java

参考

  • 1)享学课堂Mark老师笔记

你可能感兴趣的:(Java线程并发工具类)