技术书籍阅读笔记——深入理解java虚拟机
文章平均质量分 59
雷登宝
这个作者很懒,什么都没留下…
展开
-
经典面试题,try-catch-finally在虚拟机中的实现
相信大家在面试中,或者其他情况下经常会看到这样的一道题,下面inc()方法调用后的返回值是什么,答案大家自己去执行下程序或者问度娘之后应该都知道了,在方法没有异常的时候,返回的是1,出现Exception异常的时候返回的是2,出现Exception以外的异常致使方法非正常退出时,没有返回值。但这样的结果在虚拟机的实现原理是什么呢,我想很多童鞋是不知道的。 public int inc() {原创 2017-04-20 07:50:36 · 1339 阅读 · 0 评论 -
java类加载器,双亲委派模型
什么是类加载器: 虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。 类与类加载器的关系: 对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立其在java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空气。要比较原创 2017-04-20 22:55:19 · 355 阅读 · 0 评论 -
java并发volatile的使用
关键字volatile可以说是java虚拟机提供的最轻量级的同步机制。 当一个变量定义为volatile之后,它就具备两种特性: 1、保证此变量对所有线程的可见性,即当一个线程修改了这个变量的值,新值对于其他线程是立即可得的。 注:关于volatile的可见性经常被开发人员误解,觉得:volatile变量对所有线程是立即可见的,所以volatile变量在各个线程中是一致的,所以基于volat原创 2017-04-25 08:02:59 · 337 阅读 · 0 评论 -
java虚拟机 synchronized锁优化
自旋锁与自适应自旋 互斥同步的时候,挂起线程和恢复线程的操作都需要转入内核态中完成,这些操作给系统的并发带来很大压力。同步虚拟机团队发现许多应用上锁定状态的维持时间很短,为了这段时间去挂起和恢复线程并不值得。所以当一个线程请求另一个线程的锁时,我们可以让请求线程稍等一下,但不放弃处理器的执行时间,看看持有锁的线程是否很快就会释放锁,我们只需让请求线程执行一个忙循环(自旋),这就是所谓的自旋锁。原创 2017-04-25 08:43:53 · 394 阅读 · 0 评论 -
volatile是如何实现可见性和有序性
http://blog.csdn.net/y124675160/article/details/70669928 中说到了加了volatile的变量拥有可见性和有序性两种特性,那么volatile是怎么实现这样的特性的呢,下面我们就来讲讲。 主内存与工作内存 java内存模型规定了所有的变量都存储在住内存。每条线程还有自己的工作内存,线程的工作内存中保存了被改线程使用到的变量的主内存副原创 2017-10-22 15:01:01 · 3530 阅读 · 0 评论