
java
文章平均质量分 95
1.学习java基础 2.学习java的知识点 3.深入理解java
fk543
fk5431.com
展开
-
ReentrantLock阅读
ReentrantLockReentrantLock是一个互斥锁,也是一个可重入锁。ReentrantLock锁在同一时刻只能被一个线程持有,但是它可被单个线程多次获取,每获取一次AQS的state就加1。ReentrantLock内部的实现(公平锁和非公平锁)都是基于内部Sync的实现。内部结构ReentrantLock内部定义了三个重要的内部类,Sync、FairSync、Nonfai...原创 2019-12-14 23:15:50 · 244 阅读 · 0 评论 -
ConcurrentHashMap(1.7|1.8)阅读
ConcurrentHashMapjdk1.7ConcurrentHashMap 和 HashMap非常类似,ConcurrentHashMap在实现上采取了分段锁的思想来实现的。ConcurrentHashMap在内部采用了一个叫做 Segment 的结构,一个Segment就类似HashMap中的table,这样在定位一个元素的时候,需要进行两次hash操作,一次定位到Segment,第...原创 2019-12-13 10:43:47 · 244 阅读 · 0 评论 -
aqs源码
博客地址aqsAQS(AbstractQueuedSynchronizer)是JAVA中众多锁以及并发工具的基础,其底层采用乐观锁,大量使用了CAS操作, 并且在冲突时,采用自旋方式重试,以实现轻量级和高效地获取锁。AQS虽然被定义为抽象类,但事实上它并不包含任何抽象方法。AQS是被设计为支持多种用途,如果定义抽象方法,子类在继承的时候就需要实现所有抽象方法,所以AQS将需要子类覆盖的方法都...原创 2019-11-27 22:04:34 · 320 阅读 · 0 评论 -
synchronized和lock
锁的种类锁的种类很多,包括:自旋锁(CAS)、阻塞锁、可重入锁、读写锁、互斥锁、悲观锁、乐观锁、公平锁、可中断锁等等,主要介绍下可重入锁、读写锁、可中断锁和公平锁。可重入锁如果锁具备可重入性,则称作为可重入锁。synchronized和ReentrantLock都是可重入锁,可重入性在我看来实际上表明了锁的分配机制:基于线程的分配,而不是基于方法调用的分配。举比如说,当一个线程执行到met...原创 2019-11-24 21:47:19 · 240 阅读 · 0 评论 -
线程池阅读
http://fk5431.com/20191115/javasource/util/2_ExecutorService/类继承的结构Executor是最顶层的接口,定义了execute(Runnable runnable)方法。ExecutorService继承了Executor,继承了execute方法,还定义很多接口方法,例如shutdown、isTerminated、submit等方法...原创 2019-11-19 19:50:10 · 146 阅读 · 0 评论 -
HashMap阅读 (1.8|1.7)
HashMap阅读 (1.8|1.7)HashMap源码阅读 HashMap 内部默认的参数变量值含义DEFAULT_INITIAL_CAPACITY16默认容量MAXIMUM_CAPACITY1 << 30最大容量DEFAULT_LOAD_FACTOR0.75负载因子TREEIFY_THRESHOLD8链表超过8转为红黑...原创 2019-11-17 17:13:48 · 153 阅读 · 0 评论 -
Java 类的初始化顺序
一、 没有继承情况下:package I;import java.awt.image.SampleModel;import java.lang.Thread.State;class Example{ static { System.out.println("Example 的静态块"); } { System.out.println("Example 块"); }原创 2015-11-22 14:29:24 · 848 阅读 · 0 评论 -
深入理解volatile
java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致的更新,线程应该确保通过排他锁单独获得这个变量。java语言提供了volatile,在某些情况下比锁更加方便。如果一个字段被声明成volatile,java线程内存模型确保所有线程看到这个变量的值是一致的。VolatileVolatile变量具有synchronized的可见性特性,但是不具备原子性。线程可以自动发现volatil原创 2017-05-02 13:59:28 · 1013 阅读 · 0 评论 -
深入分析ConcurrentHashMap
HashMap的问题HashMap是不支持并发操作的,多线程情况下HashMap可能会导致死循环的发生,导致CPU占用率达到100%。Hash表的数据结构HashMap通常会用一个指针数组(假设为table[])来做分散所有的key,当一个key被加入时,会通过Hash算法通过key算出这个数组的下标i,然后就把这个HashMap的源码public V put(K key, V value) {原创 2017-05-03 17:01:00 · 591 阅读 · 0 评论 -
netty核心组件
netty核心组件ChannelsCallbacksFuturesEventshandlersChannels一个Channel是java NIO的一个基本抽象。可以吧一个channel相称一个输入和输出数据的媒介,它可以被打开或者关闭。Callbacks一个callback就是一个方法,一个提供给另一个的方法的引用,这样可以让另一个方法在合适的时候来回调callback方法。 ca原创 2017-04-01 14:17:31 · 955 阅读 · 0 评论