博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java的线程安全与非线程安全
阅读量:5015 次
发布时间:2019-06-12

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

线程安全

多线程访问时,对数据进行加锁保护,防止数据出现不一致或者数据污染情况。即:当一个线程要访问某类中的数据时,会对其加锁保护,只有当此线程访问完成后,其它线程才能继续访问

一、线程安全

线程安全指多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。

二、非线程安全

非线程安全值不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据。

例如:ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?StringBuilder和StringBuffer有什么区别?

面对这样的问题,回答是:ArrayList是非线程安全的,Vector是线程安全的;HashMap是非线程安全的,HashTable是线程安全的;StringBuilder是非线程安全的,StringBuffer是线程安全的。

总结:

非线程安全是指多线程操作同一个对象可能会出现问题。而线程安全则是多线程操作同一个对象不会有问题。

线程安全必须要使用很多synchronized关键字来同步控制,所以必然会导致性能的降低。

所以在使用的时候,如果是多个线程操作同一个对象,那么使用线程安全的Vector;否则,就使用效率更高的ArrayList。

转载于:https://www.cnblogs.com/yuansai/p/11458679.html

你可能感兴趣的文章
JavaSE| String常用方法
查看>>
NRF51822配对绑定要点
查看>>
C语言博客作业—数据类型
查看>>
[leetcode]Count and Say
查看>>
cookie、session和token的概念入门
查看>>
保护网站页面内容+版权
查看>>
Golang模拟客户端POST表单功能文件上传
查看>>
重启进程
查看>>
js 进度条效果
查看>>
RelativeLayout
查看>>
distinct!!!!!!!!!!!!!!!!!!
查看>>
input type
查看>>
Javascript脚本 :Function 对象的定义和使用
查看>>
工作疑问之AWS ubuntu16.04 修改网卡名
查看>>
data:image/png;base64
查看>>
private关键字
查看>>
通过Performance Log确定磁盘有性能问题?
查看>>
form快速转json serialize
查看>>
POJ_1185_炮兵阵地 dp+状态压缩
查看>>
【笔记】Collection
查看>>