您当前的位置: 首页 >  Java

java持续实践

暂无认证

  • 1浏览

    0关注

    746博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Java多线程 什么是线程安全-权威定义与通俗易懂的解读

java持续实践 发布时间:2020-08-31 08:18:42 ,浏览量:1

文章目录
      • 线程安全的权威定义
      • 线程安全的通俗易懂的解读

线程安全的权威定义

《Java Concurrency In Practice》的作者 Brian Goetz 对线程安全的定义: 当多个线程访问一个对象的时候:

  1. 不用考虑这些线程在运行时环境下的调度和交替执行
  2. 不用进行额外的同步操作
  3. 或者在调用方进行任何其他的协调操作

调用这个对象的行为都可以获得正确的结果, 那么这个对象就是线程安全的

线程安全的通俗易懂的解读

上面的线程安全的定义有些晦涩难懂. 如下为通俗易懂的解读:

不管业务中遇到怎么样的多线程访问某个对象或者某个方法的情况, 在编写这个业务逻辑的时候, **都不需要进行额外的处理(可以像单线程编程一样, 不用加锁等),**程序也可以正常运行(不会因为多线程而出错),那么就可以称之为线程安全.

线程不安全的情况: 调用get方法的同时, 调用set, 这样会导致线程安全问题, 那么额外写的同步代码就是为了线程不安全写的 .

所有的代码都写成线程安全的, 也会有代价. 如果所有的代码都加上synchronized 锁 ,那就是会导致程序运行速度变慢.

如果知道一个类在使用的时候, 就不会运用在并发的场景, 那么也会降低设计成本 . 在使用一个外部提供的类的时候 ,就需要知道这个类有没有对线程安全做适配, 如果没有设计到线程安全, 那么就不要用在并发的场景. 例如在非并发的场景用HashMap, 并发的场景用ConcurrentHashMap

关注
打赏
1658054974
查看更多评论
立即登录/注册

微信扫码登录

0.0436s