什么是线程安全和线程不安全

线程安全:代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码 。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的 。一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换,不会导致该接口的执行结果存在二义性,也就是不用考虑同步的问题 。
线程不安全:是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据 。
什么是线程安全和线程不安全线程安全是多线程编程时的计算机程序代码中的一个概念 。在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况 。
当对一个复杂对象进行某种操作时,从操作开始到操作结束,被操作的对象往往会经历若干非法的中间状态 。调用一个函数(假设该函数是正确的)操作某对象常常会使该对象暂时陷入不可用的状态(通常称为不稳定状态),等到操作完全结束,该对象才会重新回到完全可用的状态 。
如果其他线程企图访问一个处于不可用状态的对象,该对象将不能正确响应从而产生无法预料的结果,如何避免这种情况发生是线程安全性的核心问题 。
扩展资料:
简单类比
线程安全性问题跟外科医生做手术有点象,尽管手术的目的是改善患者的健康,但医生把手术过程分成了几个步骤,每个步骤如果不是完全结束的话,都会严重损害患者的健康 。
想想看,如果一个医生切开患者的胸腔后要休三周假会怎么样?然而单线程的程序中是不存在这种问题的,因为在一个线程更新某对象的时候不会有其他线程也去操作同一个对象 。
(除非其中有异常,异常是可能导致上述问题的 。当一个正在更新某对象的线程因异常而中断更新过程后,再去访问没有完全更新的对象,会出现同样的问题)
参考资料来源:百度百科-线程安全性
参考资料来源:百度百科-线程安全
什么是线程安全与非线程安全【什么是线程安全和线程不安全】线程安全与不安全的本质区别在于对于共享资源的访问上的执行效果.安全线程在处理共享资源时效果具有原子性,即必须等到当前线程访问结束后别的线程才能继续访问.而非安全线程则任何时候都可以抢占cpu的使用权,导致的结果就是线程共享资源由于多线程争抢访问导致的数据错误问题.