一、出现背景 1、线程不安全的HashMap 因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。 2、效率低下的HashTable容器 HashTable容器使用synchronized来保证线程安全,但在线程竞争激 ...
分类:
其他好文 时间:
2017-09-13 14:08:04
阅读次数:
224
单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 一、懒汉式单例 以上懒汉式单例的实现没有考虑线程安全问题,它是线程不安全的,并发环境下很可能出现多个Singleton实例,要实现线程安全,有以下三种方式,都是对ge ...
分类:
其他好文 时间:
2017-09-12 17:49:23
阅读次数:
227
1 0~999999之间的所有数字中,任何一位都不包括数字1的数字总数为多少99999262144381041524288531441900000 9的6次方 因为是0-999999 排列组合计算 2 以下关于STL的描述中,____是错的。STL容器是线程不安全的当容量不够时,vector内部内存 ...
分类:
其他好文 时间:
2017-09-12 11:11:59
阅读次数:
314
线程不安全问题 首先明白什么是线程不安全: 举例:struts2中,每个action中都定义了model模型对象(action类中是全局对象的存在 数据域属性) 用于封装前端页面提交过来的数据 所以就造成了struts2是非线程安全的, 即struts2不能使用单例模式,而只能使用多例模式,因为:当 ...
分类:
其他好文 时间:
2017-09-03 16:06:16
阅读次数:
245
最近syslog出了一次问题,我们配置了不同appname打印到不同文件。现在用不同appname打印log的时候,偶然会混在一起。检查过配置后,觉得不是配置问题,如果是配置问题应该每一条都会打错位置。后来同事发现是c接口线程不安全导致的。这里不是指syslog的libc接口线程不安全,是我们调用s ...
分类:
其他好文 时间:
2017-09-03 12:13:02
阅读次数:
266
问题: SimpleDateFormat 是线程不安全的类,一般不要定义为static变量,如果定义为static,必须加锁,或者使用DateUtils工具类。 解决方法: [正例]: 1.注意线程安全,使用DateUtils。 2.亦推荐如下处理: 3.说明:如果是JDK8的应用,可以使用Inst ...
分类:
其他好文 时间:
2017-09-02 19:11:51
阅读次数:
186
一、为何用ConcurrentHashMap 在并发编程中使用HashMap可能会导致死循环,而使用线程安全的HashTable效率又低下。 线程不安全的HashMap 在多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap ...
分类:
编程语言 时间:
2017-08-31 14:27:05
阅读次数:
148
1、懒汉式,线程不安全 是否 Lazy 初始化:是 是否多线程安全:否 实现难度:易 描述:这种方式是最基本的实现方式,这种实现最大的问题就是不支持多线程。因为没有加锁 synchronized,所以严格意义上它并不算单例模式。这种方式 lazy loading 很明显,不要求线程安全,在多线程不能 ...
分类:
其他好文 时间:
2017-08-30 16:37:44
阅读次数:
262
如何正确地写出单例模式 1.懒汉式,线程不安全 这段代码简单明了,而且使用了懒加载模式,但是却存在致命的问题。当有多个线程并行调用 getInstance() 的时候,就会创建多个实例。也就是说在多线程下不能正常工作 public class Singleton { private static S ...
分类:
其他好文 时间:
2017-08-28 23:51:50
阅读次数:
175
springmvc是通过方法的形参接收参数,在使用时可以以单例方式使用,建议使用单例。 struts是通过成员变量接收参数,在使用时必须以多例方式使用。 注意:一般类中有成员变量,都是线程不安全的,不能使用单例,因为成员变量是共有的属性。 就比如mybatis中的sqlSession接口中定义了成员 ...
分类:
编程语言 时间:
2017-08-27 11:09:46
阅读次数:
156