各种安全问题(杂)
StringBuilder 的方法不是线程安全的
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
ArrayList是不同步的 线程不安全
LinkedList 不同步的 线程不安全
HashSet也是不安全的
HashMap 是不同步的 线程不安全
当多个线程操作同一个对象时,可以选择线程安全的Vector;被淘汰了
StringBuilder线程不安全,StringBuffer线程安全。
java.util.Hashtable、java.util.Vector等集合类在多线程环境下,如果只是调用put、get、remove等方法的话是能保证线程安全的,但如果进行遍历的话就无法保证线程安全了。这种情况也叫做“条件线程安全”。
关于线程不安全解决的方法:
https://www.jianshu.com/p/4f594a84f2dd
线程安全不一定是安全的
因为Vector是线程安全的,在多线程环境下理应正常运行。但是这个线程安全是有缺陷的,再迭代的情况下,我们需要的实际上是对整个迭代过程加锁,而不是对迭代器的hasNext、next等单独的方法加锁
对Collections.synchronizedList 迭代加锁
Collections.synchronizedList不安全例子 这个只能保证添加之类对原子操作的时候是安全的
比如 迭代或者isEmpty是不安全的
http://huffmans.iteye.com/blog/1774752
https://blog.csdn.net/lzm1340458776/article/details/42455577
不安全转安全例子:
List aIntegers=new ArrayList();
List aList=Collections.synchronizedList(aIntegers);
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
TOMCAT概念、安装及配置说明
基础概念 JDK:java开发工具包 JRE:java运行环境(包含于JDK中) SDK:辅助开发工具 J2EE、J2SE、J2ME:java针对不同的使用提供不同的类库,分别为企业应用、标准版应用、手机版的微型开发应用。 中间件:Tomcat、Resin、Jboss、Weblogic 服务安装 安装JDK # mkdir -pv /usr/java # cd /usr/java # tar -axvf jdk1.7.0_55tgz # cat /etc/profile JAVA_HOME=/usr/java/jdk1.7.0_55 PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME jdk1.8版本环境变量设置如下: JAVA_HOME=/usr/java/jdk1.8.0_151 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar export PATH JAVA_HOME CLASSPATH # source /etc/profi...
- 下一篇
Java和C++的区别
Java和C++的区别 Java和C++都是面向对象语言。也就是说,它们都能够实现面向对象思想。那两者到底有什么区别呢?下面我们来分析一下吧! 由于c++为了照顾大量的C语言使用者, 而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性!JAVA则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它是在对多种程序设计语言进行了深入细致研究的基础上,据弃了其他语言的不足之处,从根本上解决了c++的固有缺陷。 区别: 1.多重继承 c++支持多重继承,这是c++的一个特征,它允许多父类派生一个类。尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。Java不支持多重继承,但允许一个类继承多个接口,从而实现了c++多重继承的功能,又避免了c++中的多重继承实现方式带来的诸多不便。 2.数据类型及类 Java是完全面向对象的语言,所有函数和变量部必须是类的一部分。除了基本数据类型之外,其余的都作为类对象,包括数组。对象将数据和方法结合起来,把它们封装在类中,这样每个对象都可实现自己的特点和行为。而c++允许将函数和变量定义为全局的。此外,...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装