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

声明:本文是《 Java 7 Concurrency Cookbook 》的第三章, 作者: Javier Fernández González 译者:郑玉婷

3
线程同步工具

章节提要:

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

介绍

在第二章基本的线程同步中,我们学习了同步和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个教你如何使用以上描述的机制的指南。

原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/140945.html

(0)
上一篇 2021年9月5日
下一篇 2021年9月5日

相关推荐

发表回复

登录后才能评论