线程安全
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)简图: