- 博客(8)
- 收藏
- 关注
翻译 Java之多线程内存可见性_3(synchronized和volatile比较)
synchronized和volatile比较1.volatile不需要加锁,比synchronized更轻量级,不会阻塞线程2.从内存可见性角度,volatile读相当于加锁,volatile写相当于解锁3.synchronized技能保证可见性,又能保证原子性,而volatile只能保证可见性,无法保证原子性注:volatile比synchronized执行效率更高,能保证
2015-12-17 14:30:27
300
翻译 Java之多线程内存可见性_2(volatile不能保证原子性)
以下内容在慕课网-->细说Java多线程之内存可见性volatile不能保证原子性public class VolatileDemo{ private volatile int number = 0; public int getNumber(){ return this.number; } public void increase(){ this.number
2015-12-17 14:16:58
415
翻译 Java之多线程内存可见性_2(volatile实现可见性)
volatile实现可见性volatile关键字:1.能够保证volatile变量的可见性2.不能保证volatile变量符合操作的原子性volatile如何实现内存可见性:深入来说:通过加入内存屏障和禁止重排序优化来实现的。1.对volatile变量执行写操作时,会在写操作后加入一条store屏障指令(cpu写缓存机的缓存强制刷新到主内存中)2.对volatile变量
2015-12-17 12:55:46
946
翻译 Java之多线程内存可见性_2(synchronized实现可见性代码)
上面的代码结果可能是6,0分析:1.执行 顺序 1.1->2.1->1.2->2.2 result = 3 2.执行 顺序 1.2->2.1->.2.2->1.1 result = 03.可以自己分析其他情况4.特殊:2.1和2.2是可以重排序的(2.1和2.2没有数据依赖关系,只有数据依赖关系才会禁止重排序)
2015-12-17 12:09:27
270
翻译 Java之多线程内存可见性_2(synchronized可见性原理)
可见性:要实现共享变量的可见性,必须保证2点:1.线程修改后的共享变量值能够及时从工作内存刷新到主内存中。2.其他线程能够及时把共享变量的最新值从主内存更新到自己的工作内存中。以下的记录都是来源于慕课网-细说java多线程之内存可见性Java语言层面你支持的可见性实现方式:(不包含jdk1.5之后的一些高级特性)1.synchronized2.volatil
2015-12-17 11:29:45
1786
2
翻译 Java之多线程内存可见性_1
一下的记录都是来源于慕课网-细说java多线程之内存可见性记录总结:可见性:一个线程对共享变量值的修改,能够及时地被其他线程看到。共享变量:如果一个变量在多个贤臣的工作内存中都存在副本,那么这个变量就是这几个线程的共享变量。java内存模型(JMM) java内存模型(Java Memory Model)描述了java程序中各种变量(线程共享变量)的
2015-12-17 11:05:40
323
转载 java之Vertx_1_简介
Vertx的简介作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs链接地址:http://blog.csdn.net/chszs/article/details/8949559打印一下重点1.Vert.x是一个异步应用程序开发框架,可用于开发异步、可伸缩、高并发的Web应用。 2.可以用JavaScript、C
2015-12-16 11:49:28
369
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人