线程池 线程池是可以控制线程创建、释放、并通过某种策略尝试复用线程去执行任务的一种管理框架,从而实现线程资源与任务之间的一种平衡。 类图 Executor Executor是最基本的执行接口:“执行者”接口,只提供了一个方法:可以用来执行已经提交的Runnable任务对象,这个接口提供了一种将“任务 ...
分类:
编程语言 时间:
2017-09-23 15:29:14
阅读次数:
199
一.适应ConcurrentHashMap的原因 HashMap存在线程不安全的问题,HashTable效率十分低下,因此,ConcurrentHashMap有了合适的登场机会。 (1)HashTable的线程不安全性 在并发编程环境中,使用HashMap进行put操作会引起死循环,导致CPU利用率 ...
分类:
其他好文 时间:
2017-09-16 20:47:29
阅读次数:
249
前沿: ReentrantLock 是java重入锁一种实现,在java中我们通常使用ReentrantLock 和 synchronized来实现锁功能,本篇通过例子来理解下ReentrantLock使用以及什么是可重入锁。 理解可重入: 1. 锁机制是为了多线程并发访问共享资源情况下为保证线程的 ...
分类:
其他好文 时间:
2017-09-11 19:48:38
阅读次数:
161
一、概述: Java纪年1.5年,ReentrantReadWriteLock诞生于JUC,此后,国人一般称它为读写锁。人如其名,他就是一个可重入锁,同时他还是一个读写锁 a)跟ReentrantLock并没有任何的亲属关系 因为ReentrantReadWriteLock在命名上跟Reentran ...
分类:
其他好文 时间:
2017-09-07 16:14:05
阅读次数:
191
1 公平锁/非公平锁 公平锁是指多个线程按照申请锁的顺序来获取锁。 非公平锁是指多个线程按照申请锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。有可能,会造成优先级反转或者饥饿现象。 对于Java ReentrantLock而言,通过构造函数指定该锁是否是公平锁,默认是非 ...
分类:
编程语言 时间:
2017-09-04 00:48:05
阅读次数:
272
目录 1.引子 2.AQS架构设计原理 3.AQS源码实现 4.简单应用 5.总结 正文分割线 一、引子 Doug Lea在JSR166中建立了一个小框架,AbstractQueuedSynchronizer同步器框架(AQS)。这个框架为构造同步器提供一种通用的机制,并且被j.u.c包中大部分类使 ...
分类:
其他好文 时间:
2017-07-26 22:15:15
阅读次数:
346
ReenTrantLock可重入锁(和synchronized的区别)总结 可重入性: 从名字上理解,ReenTrantLock的字面意思就是再进入的锁,其实synchronized关键字所使用的锁也是可重入的,两者关于这个的区别不大。两者都是同一个线程没进入一次,锁的计数器都自增1,所以要等到锁的 ...
分类:
其他好文 时间:
2017-07-20 16:25:25
阅读次数:
565
1 . 多个线程访问多个对象JVM会创建多个锁。2 . 静态方法是以类为单位进行同步的——对于同一个类中的所有静态方法,在同一时间内,只允许有一个线程执行其中的一个静态方法,其余想要进入这些方法的线程都必须挂起等待。非静态方法是以对象为单位进行同步的。3 .假设现有两个线程A和B,一个object对 ...
分类:
编程语言 时间:
2017-07-17 20:21:28
阅读次数:
180
synchonrized和lock的区别 synchronized:在需要同步的对象中加入此控制,synchronized可以加在方法上,也可以加在特定代码块中,括号中表示需要锁的对象。是原生语法层面的互斥锁。lock:需要显示指定起始位置和终止位置。一般使用ReentrantLock类做为锁,多个... ...
分类:
其他好文 时间:
2017-07-13 21:47:31
阅读次数:
154
也就是说,如果condition构造函数lock参数为空的话,会自动创建可重入锁RLock。 可重入锁RLock,同一线程可以多次获取(the same thread may acquire it again without blocking)。 ...
分类:
编程语言 时间:
2017-07-03 23:52:31
阅读次数:
263