介绍

并发编程中一个最常见的情况是多个线程共享一个资源。在并发应用中,通常多个线程读写同一数据或访问同一个文件、数据库连接。 共享资源会导致错误或数据不完整,需要有机制来避免这些错误。

问题的解决方案引入临界区的概念。临界区是一段访问共享资源的代码,同一时间不能由多于一个线程执行。

为了帮助程序员实现临界区,Java提供了一些同步机制。 当一个线程要访问一个临界区,它使用其中一种同步机制来查探是否有其他线程在执行临界区代码。 如果没有,则此线程进入临界区。否则线程被同步机制挂起直到已进入临界区的线程执行完离开临界区。 如果临界区可用时有多个线程在等待,JVM将选择其中一个,其余的继续等待。

本章介绍两种基本的同步机制:

  • 关键字: synchronized
  • Lock 接口及其实现