什么是线程安全?

1.为什么会有线程安全问题?  

  当多个线程同时共享同一个成员变量(全局变量)或静态变量,做写操作时,可能会发生数据冲突问题,也就是线程安全问题。做读操作时不会发生数据冲突问题。

2.线程安全问题怎么解决?

  使用synchronized(同步)关键字或者jdk1.5里面的并发包lock

       2.1 synchronized 

    2.1.1 synchronized 同步代码块

      将可能发生线程安全问题的代码,用synchornized包括起来。

      注:synchronized代码块中,ob参数表示为锁,多线程调用的时候,该锁必须为同一个。 

    2.1.2 synchronized 同步方法

      在需要同步的方法上面添加synchronized修饰。

      

    注:同步函数使用的是“this”锁,等同于:

    

    2.1.3 静态同步方法 

      在需要同步的方法上面添加static synchronized修饰。

      注:静态同步方法,使用的锁是该方法所属字节码文件对象,可以用getClass方法获取,也可以用 当前类名.class 表示 

      注:synchronized 关键字只适合单个JVM,集群的情况不适用,分布式锁,一般使用zookeeper.

原文地址:https://www.cnblogs.com/zyybb/p/10880546.html