多线程的线程安全问题

1. 内存可见性

一个线程对共享变量值的修改,能够及时地被其他线程看到。

2. 竞态条件

竞态条件:当某个计算的正确性去居于多个线程交替执行的执行顺序,就会发生竟态条件。

解决线程安全方法

解决线程的方法就是,在一个线程对数据进行一系列操作期间,只允许当前线程访问数据。其他的线程被关在这段执行代码外等待,不得读写数据。

解决线程安全:

1. 避免数据同步访问

  • 使用不可变对象,则一定是线程安全的。
  • 不共享数据变量,只在单独线程中访问数据(例如使用ThreadLocal进行线程封闭).

2. 内存可见性

  • 使用volatile解决内存可见性问题

3. 数据同步访问加锁

  • 使用synchronized关键字
  • 使用Reentranctlock锁
 posted on 2019-02-28 15:41  猛练自然强  阅读(112)  评论(0)    收藏  举报