Java线程安全与同步
2015-09-28 11:41
579 查看
Java线程安全与同步
线程安全接触Java的集合框架的时候,总是免不了听到线程安全、同步这两个概念,以前也没有仔细去了解过是什么意思,刚才了解了一下,感觉就是一个意思,线程安全依靠的就是同步机制。
线程安全就是说多线程访问同一代码,不会产生不确定的结果。编写线程安全的代码是低依靠线程同步。
首先来看看线程安全的实现原理:
jvm有一个main memory,而每个线程有自己的working memory,一个线程对一个变量进行操作时,都要在自己的working memory里面建立一个copy,操作完之后再写入main memory。多个线程同时操作同一个变量,就可能会出现不可预知的结果。用synchronized的关键是建立一个镜像,这个镜像可以是要修改的变量也可以其他你认为合适的对象比如方法和类,然后通过给这个镜像加锁来实现线程安全,每个线程在获得这个锁之后,要执行完才会释放它得到的锁。这样就实现了所谓的线程安全。
在JDK的集合框架中,有一些是线程安全的,比如:Hashtable、Vector等,这些接口由于本身的代码中就实现了同步,所以效率比较低,已经被取代,实际中也使用的比较少。
1
顶
3
踩
分享到:
Java集合框架 | 我回来了
2012-09-03 00:01
浏览 4600
评论(6)
分类:编程语言
相关推荐
评论
6 楼 _Yggd 2012-12-11
是不是在java web中就用hashtable.Vector就比较好?
5 楼 hejianmingwshjmcj 2012-09-04
ConcurrentHashMap,没有用过,用得比较多得还是hashmap
4 楼 java_user 2012-09-03
用Collections包装一下就好了
3 楼 502220545 2012-09-03
lovexp2010 写道
引用
在JDK的集合框架中,有一些是线程安全的,比如:Hashtable、Vector等,这些接口由于本身的代码中就实现了同步,所以效率比较低,已经被取代,实际中也使用的比较少。
请问被什么取代?实际中使用比较多的是什么?求科普~~
用ConcurrentHashMap 取代 HashTable
看看jdk 5 的新特性 最牛的就是 多线程
2 楼 随心追求 2012-09-03
使用比较多的是 ArrayList HashMap 等。但不是所谓的取代。这些是非线程安全的运行效率当然快。所以还是要根据不同的情况选择合适的集合。
1 楼 lovexp2010 2012-09-03
引用
在JDK的集合框架中,有一些是线程安全的,比如:Hashtable、Vector等,这些接口由于本身的代码中就实现了同步,所以效率比较低,已经被取代,实际中也使用的比较少。
请问被什么取代?实际中使用比较多的是什么?求科普~~
相关文章推荐
- 如何 使用eclipse 建立maven3 项目 (入门级)
- Study schedule for new work.
- HIVE Exception in thread "main" java.lang.IncompatibleClassChangeError: Found class jline.Terminal,
- eclipse debug技巧
- java中的for循环
- Spring 使用context:annotation-config的设置
- Java 比较两个日期的方法
- MyEclipse 生成javaDoc文档
- SpringMVC与Struts2区别
- java内存分配
- Java里的CompareAndSet(CAS)
- Spring中配置和读取多个Properties文件
- Java容器Collection与迭代器Iterator
- springmvc 上传文件
- JAVA实现json和对象间的相互转换,支持复杂对象格式
- java获取客户端请求IP地址 获取公网ip
- java定时器
- spring3.2.2整合hibernate4.3.8final出错
- Spring Batch Tasklet example(二)
- 解决eclipse快捷方式无法启动