摘要:
Semaphore信号量原理 Semaphore是一个计数信号量,本质是"共享锁". Semaphore维护一个信号量许可集. 线程可以调用acquire()获得信号量的许可. 线程可以调用release()释放其持有的信号量. 使用acquire()请求获得信号量时,若信号量有可用的许可时,线程获 阅读全文
摘要:
ScheduledThreadPoolExecutor详解 简介 继承自ThreadPooExecutor,为任务提供延迟或周期执行. 使用专门的ScheduledFutureTask来执行周期任务,也可以接收不需要时间调度的任务. 使用DelayedWorkQueue存储任务.(一种无界延迟队列) 阅读全文
摘要:
ReentrantReadWriteLock详解 简介 特点: ReentrantReadWriteLock允许多个读线程同时访问,不允许写线程和读线程,写线程和写线程同时访问. 一般情况下,共享数据的读操作远多于写操作,比ReentrantLock提供更好的并发性和吞吐量. 读写锁内部维护两个锁: 阅读全文
摘要:
Phaser详解 简介 一种可重用的同步栅栏,功能与CyclicBarrier和CountDownLatch类似. 内部使用CAS操作保证原子性. 运行机制 注册机制 Phaser中注册的同步者(parties)会随着时间的变化而变化. Phaser可通过构造器初始化parties个数,也可以在运行 阅读全文
摘要:
NIO 入门 输入/输出:概念性描述 传统IO: 使用流的方式完成IO。 所有I/O被视为单个的字节来移动。 通过Stream的对象一次移动一个字节。 流与块的比较 传统IO与NIO的区别在于数据的打包和传输的方式。 传统IO ==> 以流的方式处理数据。 NIO ==> 以块的方式处理数据。 流式 阅读全文