11.5 线程的同步机制

11.5 线程的同步机制

在前面所见的线程中,线程功能简单,每个线程都包含了运行时所需要的数据或方法,那么该线程运行时,因不需要外部的数据或方法,就不必关心其他线程的状态或行为,称该线程是独立的或是异步执行的。

而当应用问题的功能增强、关系复杂时,就存在多个线程对共同数据进行操作的需求。

当一个程序有多个线程在执行时,因为线程的速度无法预知,对于共用数据的插入、删除、更新等动作,若不作适当协调的话,所取得的数据可能不正确。可能甲线程正在更新,但未完成,但乙线程已将数据取走了,数据当然不正确。为了避免这种情况,Java提供的线程同步机制来解决。

线程的同步机制包括两方面:

共享数据的线程“互斥”锁定:限定任何时刻只有一个线程对一个共享数据对象进行操作,从而保证数据对象的完整性和一致性。

传送数据的线程同步运行:对于需要传送数据的多个线程必须同步运行,步调一致,保证传送数据及时准确收到。