简易的线程安全图

线程安全

  1)工作原理:    

    ①:jvm有一个main memory,而每个线程有自己的working memory(线程的工作区)

    ②:一个线程对一个variable(线程共享数据)进行操作时,都要在自己的working memory里面建立一个copy,操作完之后再写入main memory。

    ③:多个线程同时操作同一个variable,就可能会出现不可预知的结果。根据上面的解释,很容易想出相应的scenario。

    ④:而用synchronized的关键是建立一个monitor,这个monitor可以是要修改的variable也可以其他你认为合适的object

    ⑤:通过给这个monitor加锁来实现线程安全,每个线程在获得这个锁之后,要执行完load到working memory -> use&assign -> store到main memory的过程,

      才会释放它得到的锁。这样就实现了所谓的线程安全。

  2)简图:

原文地址:https://www.cnblogs.com/xiao-lin-unit/p/13863621.html