什么是线程安全问题?如何解决?

线程安全问题指的是在某一线程从开始访问到结束访问某一数据期间,该数据被其他的线程所 修改,那么对于当前线程而言,该线程就发生了线程安全问题,表现形式为数据的缺失,数据 不一致等。

线程安全问题发生的条件:

1)多线程环境下,即存在包括自己在内存在有多个线程。

2)多线程环境下存在共享资源,且多线程操作该共享资源。

3)多个线程必须对该共享资源有非原子性操作。

线程安全问题的解决思路:

1)尽量不使用共享变量,将不必要的共享变量变成局部变量来使用。

2)使用synchronized关键字同步代码块,或者使用jdk包中提供的Lock为操作进行加锁。

3)使用ThreadLocal为每一个线程建立一个变量的副本,各个线程间独立操作,互不影响。