欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

《深入理解Java虚拟机》并发(第12~13章)笔记,

来源: javaer 分享于  点击 30756 次 点评:48

《深入理解Java虚拟机》并发(第12~13章)笔记,


volatile关键字的作用

多线程的实现

JDK基于具体系统来做的,如内核线程、用户线程、用户线程加轻量进程混合等。

不可变

初始化后就不会改变

  • final修饰
  • String
  • java.lang.Number的部分子类如Long、Double,AtomicInteger和AtomicLong除外

线程安全

如Vector这样的容器,虽然get()、size()、add()等有synchronized关键字,但是实际使用时还是需要额外的同步(可以是针对容器对象本身的synchronized)保障。
原因是,Vector的线程安全,指的是其对应方法不可打断。但是在多线程环境下,多个方法按顺序执行时,仍有可能产生非预期的行为。
举例:对于非空Vector,记为v,多个线程同时执行remove(v.size()-1),有可能发生数组越界。

逃逸分析

(实际是第11章的内容)
运行期优化,判断一个对象是否会逃逸到方法外或其他线程。如果不会逃逸,对应的优化手段:

  • 栈上分配,在栈上分配这个对象
  • 同步消除,去掉这个对象多线程下的同步措施
  • 标量替换,将这个对象拆分成标量(基本数据类型、referrence等)来创建而不是创建这个对象。

相关文章

    暂无相关文章
相关栏目:

用户点评