您当前的位置: 首页 >  Java

java持续实践

暂无认证

  • 1浏览

    0关注

    746博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Java多线程 四种需要考虑线程安全的情况

java持续实践 发布时间:2020-09-04 07:41:17 ,浏览量:1

文章目录
      • 四种需要考虑线程安全的情况

四种需要考虑线程安全的情况

遇到以下四种需要考虑线程安全的情况,需要注意:

  1. 访问共享的变量或资源, 会有并发风险, 比如对象的属性, 静态变量, 共享缓存, 数据库等 例如此文提到的例子, 用共享变量进行++操作. https://javaweixin6.blog.csdn.net/article/details/108327742
  2. 所有依赖时序的操作, 即使每一步操作都是线程安全的, 还是存在并发的问题. read-modify-write: 先读取, 再修改. check-then-act 先检查, 再执行. 实际上本质是一样的, 一个线程先获取数据, 再进行下一步的操作. 主要可能的问题是, 数据读取后, 还有可能被其他线程修改. 所以在这种依赖时序的情况下, 可以用synchronized锁等操作.
  3. 不同的数据之间存在绑定关系的时候. 例如IP与端口号. 只要修改了IP就要修改端口号, 否则IP也是无效的. 因此遇到这种操作的时候, 要警醒原子的合并操作. 要么全部修改成功, 要么全部修改失败.
  4. 使用其他类的时候, 如果该类的注释声明了不是线程安全的, 那么就不应该在多线程的场景中使用, 而应该考虑其对应的线程安全的类,或者对其做一定处理保证线程安全, 例如HashMap就不是线程安全的, 而ConcurrentHashMap则是线程安全的.
关注
打赏
1658054974
查看更多评论
立即登录/注册

微信扫码登录

0.0381s