java 并发协作控制

1. Lock
可实现同步的效果;tryLock()可判断是否空闲。
ReentrantLock类:可重入锁。
ReentrantReadWriteLock类:可重入读写锁,允许多个读,一个写。
lock(), unlock()方法。

2. Semaphore
信号量,是一个计数器,可以设置一定个数的并发量。
方法:acquire()获取;
release()释放。
限定多少个信号量同时访问关键区域。

3. Latch
等待锁,是一个同步辅助类,用来同步多个任务。
CountDownLatch类。
方法:countDown(): 计数减1
await(): 等待Latch为0,开始向下执行。

4. Barrier
集合点,为同步辅助类,多个线程在同一点进行同步。
CyclicBarrier类。
方法:await(): 等待其他线程,达到数量后放行。

5. Phaser
同步辅助类,允许多阶段多任务运行。
Phaser类
方法: arrive():可以不等待;
arriveAndAwaitAdvance(), 需要等待。

6. Exchanger
允许并发过程中,两个线程互换消息。
在各自的线程中定义同步点,当二者执行到特定位置时,互换消息。
方法exchange()。(对方给的为null时,丢弃)。

java 并发协作控制相关推荐

  1. Java线程详解(9)-并发协作

    Java线程:并发协作-生产者消费者模型 对于多线程程序来说,不管任何编程语言,生产者和消费者模型都是最经典的.就像学习每一门编程语言一样,Hello World!都是最经典的例子. 实际上,准确说应 ...

  2. 19、Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition

    Java并发编程:线程间协作的两种方式:wait.notify.notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者 ...

  3. Java并发编程—线程间协作方式wait()、notify()、notifyAll()和Condition

    原文作者:Matrix海 子 原文地址:Java并发编程:线程间协作的两种方式:wait.notify.notifyAll和Condition 目录 一.wait().notify()和notifyA ...

  4. JAVA线程并发数量控制_Java并发工具类(三):控制并发线程数的Semaphore

    作用 Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源. 简介 Semaphore也是一个线程同步的辅助类,可以维护当前访问自身的线程个数 ...

  5. Java并发编程71道面试题及答案

    Java并发编程71道面试题及答案 1.在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户线程(User). 任何线程都可以设置为守护线程和用户线程,通过方 ...

  6. Java并发编程73道面试题及答案——稳了

    点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! 1.在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户 ...

  7. Java 并发/多线程教程(四)-并发模型

    本系列译自jakob jenkov的Java并发多线程教程(本章节部分内容参考http://ifeve.com/并发编程模型),个人觉得很有收获.由于个人水平有限,不对之处还望矫正! 并发系统可以有多 ...

  8. Java并发编程题库

    文章目录 并发编程三要素? 实现可见性的方法有哪些? 创建线程的有哪些方式? 创建线程的三种方式的对比? Runnable 和 Callable 的区别 Java线程具有五中基本状态 什么是线程池?有 ...

  9. 《Java并发编程实践》学习笔记之一:基础知识

    <Java并发编程实践>学习笔记之一:基础知识 1.程序与进程 1.1 程序与进程的概念 (1)程序:一组有序的静态指令,是一种静态概念:  (2)进程:是一种活动,它是由一个动作序列组成 ...

最新文章

  1. servlet的 session什么时候用_抖音什么时候用dou+
  2. 如何查询当前SAP用户所属的组织单元(organization unit)
  3. vue --- 提交表单到服务器
  4. Linux 下的/usr/bin /usr/sbin /usr/local/bin /usr/local/sbin区别
  5. Scrapy-Item Pipeline(项目管道)
  6. request获取各种路径记录
  7. Android中 requestCode与resultCode的区别与用法
  8. JavaScript中的语言结构知识点总结(附实例、图解)
  9. HTML5期末大作业:5G网络网页设计——3页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计
  10. matlab数组、矩阵运算
  11. 微信小程序毕业设计、基于微信棋牌室管理小程序毕设
  12. AutoCAD2018_图层编辑
  13. 外卖cps项目的玩法淘宝客经验分享
  14. c语言面向对象:队列 (先进先出,后进先出)
  15. web前端_腾讯校招一面
  16. “蓝桥杯”练习系统——ALGO-847 盾神与简单数独
  17. 【HDU6608 Fansblog】求很大很大的数的阶乘
  18. 自闭症青年的突显网络、默认模式网络和中央执行网络功能连接的差异
  19. 武汉大学1987级计算机专业,武汉大学信息管理学院
  20. Ubuntu20.04网络连接不上

热门文章

  1. php 安装zip,php zip拓展安装
  2. windows动态库和静态库VS导入
  3. arch 安装准备--包管理的使用pacman
  4. 2016级算法第六次上机-D.AlvinZH的学霸养成记V
  5. 关于eclipase出现的problems during content assist报错问题
  6. 对一道SQL语句题目的再思考
  7. Linux下性能测量和调试诊断工具Systemtap
  8. [学习指南]运动是基于4412嵌入式技术开发板学习步骤
  9. SQL Server中追踪器Trace的介绍和简单使用-----(转)
  10. 科技部 2010-09-05