Java基础
到西伯利亚浪
多总结多思考
展开
-
java.util.concurrent之AQS
AQS的主要使用方式是继承,子类通过继承同步器并实现它的抽象方法来管理同步状态。AQS使用一个int类型的成员变量state来表示同步状态,当state>0时表示已经获取了锁,当state = 0时表示释放了锁。它提供了三个方法(getState()、setState(int newState)、compareAndSetState(int expect,int update))来对同步状...转载 2018-11-07 14:45:21 · 235 阅读 · 0 评论 -
AQS阻塞队列
AQS阻塞队列管理AQS中有一个内部类ConditionObject实现了Condition接口。所谓条件队列,其实是一个单向链表;在讲解AQS的实现原理时只讲解了AQS队列,AQS队列前面讲过是双向链表结构。也就是说在AQS整体实现中维护了两个链表:一个是“同步队列”双向链表(这里简称AQS队列),另一个是“条件队列”单向链表。原创 2018-03-13 20:21:24 · 1048 阅读 · 0 评论 -
FutureTask实现原理
提交的Runnable任务在内部统一被转换为Callable任务。查看submit方法的返回值,为一个Future,实际上这个Futrue为FutureTask实例,通过此实例,调用get方法,可以阻塞当前线程,直到任务运行完毕,返回结果。原创 2018-03-12 20:47:17 · 697 阅读 · 0 评论 -
LockSupport park/unpark
LockSupport是JDK中比较底层的类,用来创建锁和其他同步工具类的基本线程阻塞原语。java锁和同步器框架的核心AQS:AbstractQueuedSynchronizer,就是通过调用LockSupport.park()和LockSupport.unpark()实现线程的阻塞和唤醒的。原创 2018-03-12 20:05:40 · 387 阅读 · 0 评论 -
ThreadLocal使用代码欣赏
使用ThreadLocal可以用来和线程绑定特定的变量,不能被其它的线程使用。来看一个例子原创 2017-03-08 17:25:32 · 554 阅读 · 0 评论 -
枚举使用的正确姿势
枚举较常量的优势枚举可以满足使用常量的需求,使枚举常量可以有更多的描述,(如:枚举可以使用key code desc来构造)避免了传统常量的无范围性,(如:方法接受参数String,final可以满足,但使用枚举类型将缩小参数范围)PS: 枚举本质是语法糖,具体可以参考此处了解 http://unmi.cc/understand-java-enum-with-bytecode/使用的正确姿势原创 2017-03-08 11:13:33 · 504 阅读 · 0 评论 -
java 读取properties文件
借用国际化工具类的方式读取src/main/resources下properties文件原创 2017-01-18 17:32:40 · 356 阅读 · 0 评论 -
xsd 生成java 对象
xsd 生成java 对象 -XautoNameResolution 自动处理命名冲突原创 2017-01-18 17:24:27 · 795 阅读 · 0 评论 -
java反射的简单引用(模板)
1. 一个简单的java反射技术的实例(主要参考其方法和参数信息)转载 2013-04-30 18:05:47 · 780 阅读 · 0 评论 -
java线程状态
线程状态1、新建(New)新创建了一个线程对象,还未调用start()方法。2、就绪(Ready)线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中 获取cpu 的使用权 。3、运行中(Running)可运行状态(runnable)的线程获得了cpu 时间片(timeslice) ,执行程序代码。4、限期等...转载 2018-11-08 14:56:56 · 205 阅读 · 0 评论