第三章-线程同步工具(引言)

简介:

章节提要:

并发地访问资源的控制
并发地访问多个副本资源的控制
等待多个并发事件
在一个相同点同步任务
并发的阶段性任务的运行
并发地阶段性任务的阶段改变的控制
在并发任务间改变数据

介绍

在第二章基本的线程同步中,我们学习了同步和critical section的内容。基本上,当多个并发任务共享一个资源时就称为同步,例如:一个对象或者一个对象的属性。访问这个资源的代码块称为:临界区。

如果机制没有使用恰当,那么可能会导致错误的结果,或者数据不一致,又或者出现异常情况。所以必须采取java语言提供的某个恰当的同步机制来避免这些问题。

在第二章,基本的线程同步中,我们学会了以下2个同步机制:

  • 关键词同步
  • Lock接口和它的实现类们:ReentrantLock, ReentrantReadWriteLock.ReadLock, 和 ReentrantReadWriteLock.WriteLock

在此章节,我们将学习怎样使用高等级的机制来达到多线程的同步。这些高等级机制有:

  • Semaphores: 控制访问多个共享资源的计数器。此机制是并发编程的最基本的工具之一,而且大部分编程语言都会提供此机制。
  • CountDownLatch: CountDownLatch 类是Java语言提供的一个机制,它允许线程等待多个操作的完结。
  • CyclicBarrier: CyclicBarrier 类是又一个java语言提供的机制,它允许多个线程在同一个点同步。
  • Phaser: Phaser类是又一个java语言提供的机制,它控制并发任务分成段落来执行。全部的线程在继续执行下一个段之前必须等到之前的段执行结束。这是Java 7 API的一个新特性。
  • Exchanger: Exchanger类也是java语言提供的又一个机制,它提供2个线程间的数据交换点。

Semaphores是最基本的同步机制可以用来在任何问题中保护任何critical section。其他的机制只有在之前描述的那些有特殊特点的应用中使用。请根据你的应用的特点来选择适当的机制。

这章有7个教你如何使用以上描述的机制的指南。 

目录
相关文章
|
2月前
|
缓存 监控 Java
线程池的魔法:Java 开发者必备的并发工具
线程池的魔法:Java 开发者必备的并发工具
44 0
|
3月前
|
存储 Java 数据安全/隐私保护
探索Java中神奇的ThreadLocal:为什么它是多线程编程的重要工具?
探索Java中神奇的ThreadLocal:为什么它是多线程编程的重要工具?
|
24天前
|
数据可视化 关系型数据库 编译器
【C/C++ 单线程性能分析工具 Gprof】 GNU的C/C++ 性能分析工具 Gprof 使用全面指南
【C/C++ 单线程性能分析工具 Gprof】 GNU的C/C++ 性能分析工具 Gprof 使用全面指南
99 2
|
8月前
多线程的线程工具的初步使用和原理详解
多线程的线程工具的初步使用和原理详解
46 0
|
4月前
学习多线程之Semaphore工具解释
学习多线程之Semaphore工具解释
26 0
|
8月前
|
Java
【并发技术16】线程同步工具Exchanger的使用
【并发技术16】线程同步工具Exchanger的使用
|
8月前
|
数据库
【并发技术15】线程同步工具CyclicBarrier的使用
【并发技术15】线程同步工具CyclicBarrier的使用
|
8月前
|
Java
【并发技术14】线程同步工具Semaphore的使用
【并发技术14】线程同步工具Semaphore的使用
|
存储 关系型数据库 MySQL
linux Command sysbench 线程压力测试工具(2)
linux Command sysbench 线程压力测试工具(2)
|
Oracle Ubuntu 关系型数据库
linux Command sysbench 线程压力测试工具(1)
linux Command sysbench 线程压力测试工具(1)