文章分类 -  Java

独占锁和共享锁
摘要:独占锁 lock.lock() 首先会去尝试获取锁,如果成功,锁状态(state)+1;如果失败,会加入AQS队列中等待锁释放后被唤醒 lock.unlock() 释放锁,由于是重入锁,所以要判断锁状态(state)是否为0(没有任何线程持有锁),为0则会唤醒AQS队列中最前面的还在等待锁的线程,等 阅读全文

posted @ 2017-07-28 14:16 摩羯的小石头 阅读(350) 评论(0) 推荐(0)

mvn compile报编译版本错误
摘要:mvn compile报编译版本的错误,加入如下plugin即可解决 阅读全文

posted @ 2017-07-28 14:01 摩羯的小石头 阅读(139) 评论(0) 推荐(0)

volatile和synchronized关键字
摘要:volatile: 在Java并发程序缺少同步类的情况下,多线程对成员变量的操作对其它线程是透明的。volatile变量可以保证下一个读取操作会在前一个写操作之后发生。 如果不加volatile关键词,线程只会读取线程内部的变量副本。而线程外部更新线程内的变量,只会更新主内存中的变量。 但是对于vo 阅读全文

posted @ 2017-07-28 13:53 摩羯的小石头 阅读(69) 评论(0) 推荐(0)

JVM的工作流程
摘要:以下是JVM的工作流程: 运行时数据区域 1.程序计数器 通过改变这个计数器的值(行号)来选取下一条需要执行的字节码指令,程序计数器是线程私有的。 如果执行的是Native方法,计数器的值为Undefined。 2.虚拟机栈 虚拟机栈也是线程私有的,每一个方法从调用到执行完的过程,就对应着一个栈帧在 阅读全文

posted @ 2017-07-28 13:44 摩羯的小石头 阅读(151) 评论(0) 推荐(0)