zoukankan      html  css  js  c++  java
  • 线程不安全?

    1、什么是线程不安全?

         线程安全是java学习中的重点,了解哪些情况下线程不安全,可让初学者更好的理解线程安全的各种技巧。

     

               举例说明:

               我有一台电脑。有一天,朋友电脑坏了,需要借用我的电脑。第二天,我发现桌面上面的文件丢了。

     

                  多人用同一电脑,如果没有规则,很容易出现数据的不安全。

     

               所以并不是线程安不安全,而是数据安不安全。

              程序是对数据的读写,线程不安全的本质是在多线程环境中数据出现了问题。

    2、有状态和无状态

        没有绝对的安全或者不安全。 我们从一般角度进行讨论:

     

             从数据存储的角度, 我们把类(对象或者方法)分为有状态和无状态。

       

                    1、有状态 表示 有公共区域数据的读写。

                    2、无状态 表示 没有公共区域数据读写。(代表多层含义: 1. 局部数据读写其他线程无法访问。  2. 只读数据)

     

            总结1:  某个类线程安全与否,你先看是否在多线程环境下? 某个局部变量存储数据,没有其他线程访问的机会,那他很安全。

     

            总结2:  在多线程环境下,如果是无状态的类,一般也是安全的。

     

                          就像你身上没钱,走路不怕被偷钱。

     

     

     

       总结3:  在多线程环境下,如果类对公共区域数据有读写操作,那么一般是 不安全的。

     

                          为了保证安全,我们需要增加其他手段,比如锁。

     

     

        什么样的锁会是线程更安全呢? 请持续关注我,更多精彩内容等你哦!

     

     

     

     

     

  • 相关阅读:
    Golang哲学思想
    Outlook与Hotmail的设置
    Android 经验: 5555 端口会被 adb 误认为 emulator
    QT程序探测所需DLL,静态连接和打包
    VS编译的QT程序发布时产生的AppCrash问题
    新语言和旧语言
    MMU和TLB
    FMX的综合评价
    Windows核心编程学习九:利用内核对象进行线程同步
    QListWidget特别简单,但有两种添加item的方式
  • 原文地址:https://www.cnblogs.com/mostknow/p/10077487.html
Copyright © 2011-2022 走看看