您的位置:首页 > 编程语言 > Java开发

java多线程中线程安全和非线程安全

2018-01-06 16:34 190 查看
线程安全是指多个线程操作同一个对象,不会产生不一致的结果,非线程安全就可能出现每次的执行结果都不一致。

线程安全方式:

1.使用volatile关键字修饰的变量多所有线程可见,当一个线程修改了变量的值,新的值会立即从当前线程工作空间同步到主内存当中,而其他线程读取这个变量的时候,也会从主内存中拉取最新的变量值,但如果对该变量的操作含有原子操作时,不能保证线程安全。

2.使用很多synchronized关键字来同步控制,所以必然会导致性能的降低。

注意非线程安全不是说不安全,有人在使用过程中有一个不正确的观点:我的程序是多线程的,不能使用ArrayList要使用Vector,这样才安全。非线程安全并不是多线程环境下就不能使用。注意我上面有说到:多线程操作同一个对象。注意是同一个对象。如果是在主线程中new的一个ArrayList然后多个线程操作同一个ArrayList对象,那就时非线程安全,如果是每个线程中new一个ArrayList,而这个ArrayList只在这一个线程中使用,那么肯定是没问题的。



示例代码参考:http://blog.csdn.net/xiao__gui/article/details/8934832
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: