- 博客(10)
- 资源 (25)
- 收藏
- 关注
原创 JDK源码阅读——ArrayList\LinkedList
ArrayList (动态数组)javaDoc1.可变数组,允许null值存入.性能比LinkedList好?后文会做一个时间复杂度的比较 2.每个ArrayList实例都有一个容量capacity,这个容量就是数组的size,通常这个 capacity不小于ArryList的size. 随着元素的不断加入,ArrayList的capacity自动增涨 可以提前预设ArrayList的ca
2016-03-27 23:07:26 623
原创 JDK源码阅读——HashMap(1.7)
HashMap- 使用到的位运算 使用到的位运算解释: 异或运算:1 ^ 2==01^10==11 <br> 1 << 4: 1*2的4次幂 8>>2 :8除以2的2次幂(无符号) 8>>>2 :8除以2的四次幂(有符号) -8 >> 2 等于-2<br> 8 >> 2 等于2 -8 >>> 2等于1073741822 <br> 8 >>> 2等于2- HashMap jdoc概要翻译:1
2016-03-27 23:05:08 1930
原创 java并发编程——九 AbstractQueuedSynchronizer AQS详解
AbstractQueuedSynchronizer概述AQS用来实现锁或其他同步组件的基础框架(注意区别synchronized是在字节码上加指令方式,通过底层机器语言保证同步),AQS使用int类型的volatile变量维护同步状态(state),使用Node实现FIFO队列来完成线程的排队执行。在锁的实现中通过组合AQS对象的方式使用,利用AQS实现锁的语义。AQS与锁(如Lock)的对比:
2016-03-27 21:38:36 6572 2
原创 java并发编程——八 理解分析并发组件-CountDownLatch\CyclicBarrier\Exchanger\Semaphore
从这章开始介绍 java.concurrent.*中的常用并发工具类,并附带有趣的示例CountDownLatch概要调用countDownLatch.countDown() count计数器-1,countDownLatch.await()阻塞当前线程,直到count值为0。适合用在多个线程协助;或用在多个点或多个任务之间协作; 那么使用CountDownLatch对象,并设置一个初始值
2016-03-26 21:02:16 1117
原创 java并发编程——ConcurrentHashMap(1.7)
ConcurrentHashMap特点:线程安全 在并发中使用HashMap存储k/v数据结构时,多个线程并发put操作会导致HashMap底层链表形成环路,导致Entry的next永远不为空,导致死循环。而ConcurrentHashMap保证了线程安全高效 相比于其他Hash结构的线程安全容器,ConcurrentHashMap有着更高的效率。HashTable的实现通过synchron
2016-03-26 17:44:55 1590 1
原创 java并发编程—— 线程池原理 详解 ThreadPoolExecutor
为什么要使用线程池降低资源消耗: 通过重复利用线程,减少线程的创建销毁损耗的资源提高响应速度: 任务到达时,不用重新创建线程,之间可以使用已经创建好的线程执行提高线程的可管理性线程池实现原理java.util.concurrent.ThreadPoolExecutor.ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, lo
2016-03-26 17:42:19 3443
原创 java并发编程—— 七 Thread理解与死锁分析(哲学家进餐演示)
线程生命周期Start 为线程分配必要的资源,初始化线程Runnable 线程创建后,进入就绪状态,此时线程具备了获取cpu时间片的资格 (线程调度器负责分配,线程调度器不受JVM控制,依赖于底册操作系统),只要调度器分配cpu时间片,即可运行。Running 奔跑吧少年Blocked 因为如下几种原因,产生阻塞,此时,调度器会忽略该线程,不再分配时间片。wait()
2016-03-26 17:29:17 1206
原创 java并发编程—— 六 进程协作:阻塞队列\wait() notify()\ Condition
进程协作的三种常用方式wait()&¬ifyAll()要点:wait()中释放该对象的对象锁notify() notifyAll() wait() 均是Object方法notify() notifyAll() wait() 必须在 同步方法中(实现线程安全即可)调用 否则抛 java.lang.IllegalMonitorStateException经典范式,
2016-03-24 23:47:34 3288
原创 java并发编程——java内存模型/happens-before
如有纰漏,请指正!java内存模型图 第一张图从JVM角度抽象,每个线程都有一个LocalMemory,用与存储读\写变量的副本,它抽象涵盖了cpu cache memory、cpu Registers。JMM是个抽象的概念,通过控制线程与主存之间的通信(同步),来保证程序执行的可见性。重排序编译器、cpu通过将指令重新排序,然后执行,以提高执行效率,编译器重排序 (javac)
2016-03-23 15:48:58 1606 2
Visual C++ Redistributable for Visual Studio 2015
2017-10-28
ckeditorjavaweb项目
2013-11-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人