Java——线程安全和不安全的集合

2019-07-08  本文已影响0人  含泪若笑

线程安全工作原理: jvm中有一个main memory对象,每一个线程也有自己的working memory,一个线程对于一个变量variable进行操作的时候, 都需要在自己的working memory里创建一个copy,操作完之后再写入main memory。 当多个线程操作同一个变量variable,就可能出现不可预知的结果。 

而用synchronized的关键是建立一个监控monitor,这个monitor可以是要修改的变量,也可以是其他自己认为合适的对象(方法),然后通过给这个monitor加锁来实现线程安全,每个线程在获得这个锁之后,要执行完加载load到working memory 到 use && 指派assign 到 存储store 再到 main memory的过程。才会释放它得到的锁。这样就实现了所谓的线程安全。

线程安全:

Vector 、HashTable 、StringBuffer 

非线程安全的集合对象:

ArrayList 、LinkedList、HashMap、HashSet、TreeMap、TreeSet、StringBulider:

上一篇下一篇

猜你喜欢

热点阅读