Java进阶——线程安全和非线程安全

线程安全

多线程访问时,采用加锁(synchronized)机制。
当多线程更改读取数据时,当一个子线程读取数据时,其他线程读改该数据时转为阻塞状态;

非线程安全

不提供数据访问保护,多线程可能会出现脏数据的问题。

Java中的线程安全与非线程安全

StringBuffer和StringBuilder

  • StringBuffer是线程安全
  • StringBuilder是非线程安全

ArrayList和Vector

  • ArrayList是非线程安全
  • LinkedList是非线程安全
  • Vector是线程安全

HashMap和HashTable

  • HashMap是非线程安全
  • HashTable是线程安全

使用场景

多线程操作同一个对象

使用线程安全来确保数据安全,避免脏数据。

单线程/多线程操作不同对象

使用非线程安全,不加锁,效率高。

posted @ 2020-09-18 22:06  不爱学习的小策  阅读(345)  评论(3编辑  收藏  举报