8.2、线程同步的目的

线程同步的目的就是不管线程之间的执行如何穿插,其运行结果都是正确的。或者说,要保证多线程执行下结果的确定性。而在达到这个目标的同时,要保持对线程执行的限制越少越好。

除此之外,线程同步的另一个目的涉及执行效率。除了前面说过的多线程执行的结果是不确定的之外,某执行效率也是不确定的。比如,在某段时间内,线程A执行了5条指令,而线程B只执行了3条指令。线程A比线程B多执行了两条指令。但这并不是问题的关键。问题的关键是到底线程A是否比线程B执行的多,或者是多多少等,皆是不正确的。如果我们想使其变得确定,就需要进行线程同步。

那么到底什么是“同步”呢?同步就是让所有线程按照一定的规则执行,使得其正确性和效率都有迹可循。线程同步的手段就是对线程之间的穿插进行控制。

下面以“金鱼问题”来演示线程同步的各种控制手段。