当前位置:   article > 正文

Java实现线程安全的几种方式:常量/数据私有/互斥同步/非阻塞同步_java线程安全的几种方式

java线程安全的几种方式

1.常量:
数据声明成常量,使数据无法被修改,则一定线程安全。

  • final声明的基本数据类型
  • String
  • 枚举类型

2.数据私有
将数据变成线程私有的数据

  • 栈(局部变量):多个线程访问同一个方法的局部变量时,不会出现线程安全问题,因为局部变量存储在虚拟机栈中,属于线程私有的。
  • Thread Local:线程本地存储机制

3.互斥同步
java提供锁机制控制多线程对共享资源的访问,只允许获取锁的线程执行。

  • synchronized:JVM实现
  • ReentrantLock:JDK实现
    线程的阻塞和唤醒消耗性能,影响程序的性能。适合修改多的场景。

4.非阻塞同步
先进行操作,如果没有其它线程争用共享数据,那操作就成功

  • CAS机制:乐观锁
  • 版本号
  • 原子类AtomicInteger:CAS机制
    适合查询多修改少的场景。
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/900245
推荐阅读
相关标签
  

闽ICP备14008679号