在多线程对同一资源并发访问下可能会造成数据的安全问题。
线程安全问题都是由全局变量及静态变量引起的。若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则的话就可能影响线程安全。
也就是说,我们可以通过考虑线程的同步,来解决线程安全问题。
java中提供了线程同步机制(synchronized),为了保证每个线程都能正常的执行原子操作,也就是说在某个线程修改共享资源的时候,其他线程不能修改该资源,等待修改完毕同步之后,才能去抢夺CPU资源,完成对应的操作,保证了数据的同步性,从而解决线程安全问题。
完成同步操作的三种方式:① 同步代码块 ② 同步方法 ③ 锁机制