线程主要通过对引用字段所引用的字段和对象进行共享访问而通信。这种通信形式非常高效,但可能导致两种错误:线程干扰(thread interference内存一致性错误(memory consistency errors。防止这些错误所需的工具是同步(synchronization
    但是,同步会引入线程争用(thread contention),当两个或多个线程试图同时访问同一资源并使Java运行时更慢地执行一个或多个线程,甚至挂起它们的执行时,就会发生线程争用。 饥饿和活锁是线程争用的形式。 有关更多信息,请参见活跃度部分。
    本节涵盖以下主题:

    • 线程干扰描述了当多个线程访问共享数据时如何引入错误。
    • 内存一致性错误描述了由于共享内存视图不一致而导致的错误。
    • 同步方法描述了一个简单的方法,可以有效防止线程干扰和内存一致性错误。
    • 隐式锁和同步描述了一个更通用的同步习惯用法,并描述了如何基于隐式锁进行同步。
    • 原子访问讨论了不会被其他线程干扰的一般操作概念。