tzkr.net
当前位置:首页 >> 什么是线程安全和不安全 >>

什么是线程安全和不安全

线程安全是多线程编程时的计算机程序代码中的一个概念.在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况.当对一个复杂对象进行某种操作

什么是线程安全? 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的. 或者说:一个类或者

首先要明白线程的工作原理,jvm有一个main memory,而每个线程有自己的working memory,一个线程对一个variable进行操作时,都要在自己的working memory里面建立一个copy,操作完之后再写入main memory.多个线程同时操作同一个

简单说如果你有一个方法,存在同时多个线程同时访问它,如果结果与单线程访问的预期结果一样,那么就说线程安全,如果结果不一样就说线程不安全希望对你有帮助

就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问 什么叫线程安全:

比如说,两个线程操作同一个ArrayList变量,那么一个线程这一时刻读的数据可能在下一刻要改变.一般在类似于下面的情景下考虑线程安全的问题:ArrayList products=new ArrayList ();products用来存放生产出来的产品.现在假设:有3个消费

比如某个变量int a=0;2个线程同时分别对其加5,000,000次.结果如果能保证得到总共的a:=10,000,000,这时就说是线程安全thread-safe的.事实上同时加的话,由于变量在内存中有缓存,非常容易漏加.导致计算严重不准确.比如在多线程动画的坐标计算上,同步不当会导致画乱.这时候就说这个变量a是线程不安全non-thread-safe.需要用java synchronize同步关键字确保同一时间只有一个线程在写该变量.

线程对立很少见,当类修改静态数据,而静态数据会影响在其他线程中执行的其他类的行为,这时通常会出现线程对立

如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的. 或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题. 线程安全问题都是由全局变量及静态变量引起的. 若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安全.

一些历史类的一般是线程安全的,例如:Vector,HashTable等在jdk升级后,出现了替代一些集合的类,ArrayList,HashMap等,一般都是线程不安全的.

网站首页 | 网站地图
All rights reserved Powered by www.tzkr.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com