java的ThreadLocal
2015-07-24 10:55
351 查看
刚刚接触到ThreadLoacl。
再看别人博客的时候发现线程同步和线程安全的区别都不清楚,先来了解一下线程同步和线程安全的区别吧。
线程安全就是说多线程访问同一代码,不会产生不确定的结果。编写线程安全的代码是低依靠线程同步。
首先来看看线程安全的实现原理: jvm有一个main memory,而每个线程有自己的working memory,一个线程对一个变量进行操作时,都要在自己的working memory里面建立一个copy,操作完之后再写入main memory。多个线程同时操作同一个变量,就可能会出现不可预知的结果。用synchronized的关键是建立一个镜像,这个镜像可以是要修改的变量也可以其他你认为合适的对象比如方法和类,然后通过给这个镜像加锁来实现线程安全,每个线程在获得这个锁之后,要执行完才会释放它得到的锁。这样就实现了所谓的线程安全。
在JDK的集合框架中,有一些是线程安全的,比如:Hashtable、Vector等,这些接口由于本身的代码中就实现了同步,但是运行时效率比较低。
进入到ThreadLocal的学习:参照的博客:
/article/1647599.html
感谢博主分享!
再看别人博客的时候发现线程同步和线程安全的区别都不清楚,先来了解一下线程同步和线程安全的区别吧。
线程安全就是说多线程访问同一代码,不会产生不确定的结果。编写线程安全的代码是低依靠线程同步。
首先来看看线程安全的实现原理: jvm有一个main memory,而每个线程有自己的working memory,一个线程对一个变量进行操作时,都要在自己的working memory里面建立一个copy,操作完之后再写入main memory。多个线程同时操作同一个变量,就可能会出现不可预知的结果。用synchronized的关键是建立一个镜像,这个镜像可以是要修改的变量也可以其他你认为合适的对象比如方法和类,然后通过给这个镜像加锁来实现线程安全,每个线程在获得这个锁之后,要执行完才会释放它得到的锁。这样就实现了所谓的线程安全。
在JDK的集合框架中,有一些是线程安全的,比如:Hashtable、Vector等,这些接口由于本身的代码中就实现了同步,但是运行时效率比较低。
进入到ThreadLocal的学习:参照的博客:
/article/1647599.html
感谢博主分享!
相关文章推荐
- struts2 tutor
- Quartz spring
- 《Java疯狂讲义》(第3版)学习笔记 1 - 如何学习Java
- 深入浅出Java回调机制
- eclipse无法查看源代码(包括导入源码和导入后无法查看的情况)
- java:String类的一些方法
- java中为什么要进行对象序列化?
- (LeetCode)反转整数
- java文件路径获取方式
- java.lang.UnsupportedOperationException异常
- sqlite-在Java中的使用sqlite-2
- JAVA流操作(2)文件流
- javafx tableview默认选择第一行
- struts2中的标签“# ”,“%{ }”,“%{# }”
- Java编程之路相关书籍(三个维度)
- 工作的空余时间可以了解的java方面书籍
- Eclipse Java注释模板设置详解
- wed service客户端在JDK1.7以上无法生成
- Java应用打包后运行需要注意编码问题
- 递归实现汉诺塔的问题---java