Java多线程 四种需要考虑线程安全的情况
发布日期:2021-06-30 13:12:09 浏览次数:2 分类:技术文章

本文共 529 字,大约阅读时间需要 1 分钟。

文章目录

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

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

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

转载地址:https://javaweixin6.blog.csdn.net/article/details/108396743 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Java多线程 多线程性能问题--上下文切换,内存同步
下一篇:Java多线程 解决private对象逸出-工厂模式(解决对象还未初始化完成就对外暴露)

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月16日 22时21分53秒