验证hashmap非线程安全

http://www.blogjava.net/lukangping/articles/331089.html

		final HashMap<String, String> firstHashMap = new HashMap<String, String>();
		Thread t1=new Thread(){
			public void run() {
				for(int i=0;i<25;i++){
					firstHashMap.put(String.valueOf(i), String.valueOf(i));
				}
			}
		};

		Thread t2=new Thread(){
			public void run() {
				for(int j=25;j<50;j++){
					firstHashMap.put(String.valueOf(j), String.valueOf(j));
				}
			}
		};

		t1.start();
		t2.start();
		//主线程休眠1秒钟,以便t1和t2两个线程将firstHashMap填装完毕。
		Thread.currentThread().sleep(1000);
		for(int l=0;l<50;l++){
			//如果key和value不同,说明在两个线程put的过程中出现异常。
			if(!String.valueOf(l).equals(firstHashMap.get(String.valueOf(l)))){
				System.err.println(String.valueOf(l)+":"+firstHashMap.get(String.valueOf(l)));
			}
		}

  

时间: 2024-10-08 13:42:24

验证hashmap非线程安全的相关文章

【java并发】造成HashMap非线程安全的原因

0. 写在前面 在前面我的一篇总结线程范围内共享数据文章中提到,为了数据能在线程范围内使用,我用了HashMap来存储不同线程中的数据,key为当前线程,value为当前线程中的数据.我取的时候根据当前线程名从HashMap中取即可. 因为当初学习HashMap和HashTable源码的时候,知道HashTable是线程安全的,因为里面的方法使用了synchronized进行同步,但是HashMap没有,所以HashMap是非线程安全的.在上面提到的例子中,我想反正不用修改HashMap,只需要

生产环境遇到的hashMap非线程安全问题java.lang.thread.waiting

写在前面:工作有几年了,从入门到现在,遇到也解决了一些问题.(当然,框架级别的暂时还没有)一直以来,都是从博客园以及其他各大社区搜罗出来的各种fix方法.目前稍有闲暇时间,在看过大V沈剑的博文后,我也鼓起勇气来书写博客,记录工作中遇到和解决的问题(其中当然也包括我在博园获取的各种解决方法:能找到原博文的小弟一定会注明出处.)因为总觉得自己水平不够,怕写出来的文章误导了别人.以下是这周生产环境遇到的一个问题,写出来供大家参考. 现象 周五一大早,车子都没停稳(电动车),群里就开始在询问谁最近的代码

非线程安全的HashMap 和 线程安全的ConcurrentHashMap(转载)

在平时开发中,我们经常采用HashMap来作为本地缓存的一种实现方式,将一些如系统变量等数据量比较少的参数保存在HashMap中,并将其作 为单例类的一个属性.在系统运行中,使用到这些缓存数据,都可以直接从该单例中获取该属性集合.但是,最近发现,HashMap并不是线程安全的,如果你 的单例类没有做代码同步或对象锁的控制,就可能出现异常. 首先看下在多线程的访问下,非现场安全的HashMap的表现如何,在网上看了一些资料,自己也做了一下测试: public class MainClass {  

所谓线程安全和非线程安全

ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?StringBuilder和StringBuffer有什么区别?这些都是Java面试中常见的基础问题.面对这样的问题,回答是:ArrayList是非线程安全的,Vector是线程安全的:HashMap是非线程安全的,HashTable是线程安全的:StringBuilder是非线程安全的,StringBuffer是线程安全的.这些是面试时经常问道的问题,但是有些情况下面试的人会追问:什么是线程安全,什么是非

JAVA中的线程安全与非线程安全

原文:http://blog.csdn.net/xiao__gui/article/details/8934832 ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?StringBuilder和StringBuffer有什么区别?这些都是Java面试中常见的基础问题.面对这样的问题,回答是:ArrayList是非线程安全的,Vector是线程安全的:HashMap是非线程安全的,HashTable是线程安全的:StringBuilder是非线程安全的,St

多线程之 线程安全与非线程安全

ArrayList和Vector有什么区别? HashMap和HashTable有什么区别? StringBuilder和StringBuffer有什么区别? 这些都是Java面试中常见的基础问题.面对这样的问题,回答是:ArrayList是非线程安全的,Vector是线程安全的:HashMap是非线程安全的,HashTable是线程安全的:StringBuilder是非线程安全的,StringBuffer是线程安全的. 此时如果继续问:什么是线程安全?线程安全和非线程安全有什么区别?分别在什么

线程安全和非线程安全

ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?StringBuilder和StringBuffer有什么区别?这些都是Java面试中常见的基础问题.面对这样的问题,回答是:ArrayList是非线程安全的,Vector是线程安全的:HashMap是非线程安全的,HashTable是线程安全的:StringBuilder是非线程安全的,StringBuffer是线程安全的.因为这是昨晚刚背的<Java面试题大全>上面写的.此时如果继续问:什么是线程安全

java线程安全和非线程安全问题

ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?StringBuilder和StringBuffer有什么区别?这些都是Java面试中常见的基础问题.面对这样的问题,回答是:ArrayList是非线程安全的,Vector是线程安全的:HashMap是非线程安全的,HashTable是线程安全的:StringBuilder是非线程安全的,StringBuffer是线程安全的.因为这是昨晚刚背的<Java面试题大全>上面写的.此时如果继续问:什么是线程安全

Java线程安全和非线程安全

ArrayList是非线程安全的,Vector是线程安全的:HashMap是非线程安全的,HashTable是线程安全的:StringBuilder是非线程安全的,StringBuffer是线程安全的 什么是线程安全?线程安全和非线程安全有什么区别?分别在什么情况下使用? 非线程安全是指多线程操作同一个对象可能会出现问题.而线程安全则是多线程操作同一个对象不会有问题.线程安全必须要使用很多synchronized关键字来同步控制,所以必然会导致性能的降低.所以在使用的时候,如果是多个线程操作同一