多线程安全问题的原因

多线程安全问题的原因:

    通过图解:发现一个线程在执行多条语句时,并运算同一个数据时,在执行过程中,其他线程参与进来,并操作了这个数据。导致到了错误数据的产生。

 

  涉及到两个因素:

    1,多个线程在操作共享数据。

    2,有多条语句对共享数据进行运算

      原因:这多条语句,在某一个时刻被一个线程执行时,还没有执行完,就被其他线程执行了。

 

  解决安全问题的原理:

    只要将操作共享数据的语句在某一时段让一个线程执行完,在执行过程中,其他线程不能进来执行就可以解决这个问题。

 

  如何进行多句操作共享数据代码的封装呢?

    java中提供了一个解决方式就是同步代码块

    格式:

    synchronized(对象) {  // 任意对象都可以。这个对象就是锁。

      需要被同步的代码;

    }

原文地址:https://www.cnblogs.com/hanmy/p/14170796.html