只要继承 Thread 类或是实现 Runnable 接口,就可以让对象具有多线程功能。入门线程是简单的,但如果多个线程共享某些数据,数据的同步(一致性、整体性)问题就要特别注意。
1. 同步化
如果程序只是一个单线程,即单一流程的程序,那么只要保证程序逻辑正确,程序通常就可以正确地执行你想要的功能。但当程序是多线程程序,即多流程同时执行时,那么就需要注意更多的细节。例如在多线程共享同一对象的数据时。
如果一个对象所持有的数据可以被多线程同时共享存取,则必须考虑到数据同步的问题。所谓数据同步指的是两份数据的整体性和一致性。例如对象 A 有 name
与 id
两个属性,而有一份 B 数据有 name
与 id
的数据要用来更新对象 A 的属性,如果 B 的 name
与 id
设定给 A 对象完成,则称 B 与 A 同步。如下图所示: