Java
文章平均质量分 88
豆小马
学习笔记&问题总结&技术难点
展开
-
AQS在几个同步工具类使用
AQS在几个同步工具类使用SemaphoreSemaphore 是只允许一定数量的线程同时执行一段任务。信号量Semaphore的主要作用是来控制同时访问某个特定资源的操作数量,或者同时执行某个指定操作的数量。 Semaphore只是计数,不包括许可对象,并且Semaphore也不会把许可与线程对象关联起来,因此一个线程中获得的许可可以在另外一个线程中释放。 Semph原创 2016-01-24 10:42:05 · 722 阅读 · 0 评论 -
BlockingQueue的核心方法
BlockingQueue的核心方法:1. 放入数据:1) offer(anObject):表示如果可能的话,将anObject加到BlockingQueue里,即如果BlockingQueue可以容纳,则返回true,否则返回false.(本方法不阻塞当前执行方法的线程)2) offer(E o, long timeout, TimeUnit unit),可以设定转载 2016-01-25 15:40:13 · 3188 阅读 · 1 评论 -
NIO缓存区(4)之通道、管道
文件通道FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。 打开FileChannel 我们无法直接打开一个FileChannel,需要通过使用一个InputStream、OutputStream或RandomAccessFile来获取一个FileChannel实例从FileChannel读取数据 调用多个read()方法之一从FileChannel中读取数据转载 2016-01-24 11:30:00 · 560 阅读 · 0 评论 -
NIO缓存区(2)之Buffer
缓冲区(Buffer)缓冲区本质上是一块内存空间。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。Buffer的基本用法 使用Buffer读写数据一般遵循以下四个步骤: · 写入数据到Buffer· 调用flip()方法· 从Buffer中读取数据· 调用clear()方法或者c转载 2016-01-24 11:25:50 · 650 阅读 · 0 评论 -
NIO学习笔记(1)之组成、NIO与IO区别、NIO和IO如何影响应用程序的设计和通道
Java NIOJava NIO 由以下几个核心部分组成: · Channels· Buffers· SelectorsChannel 和 Buffer Channel 有点象流。 数据可以从Channel读到Buffer中(channel.read(buf)),也可以从Buffer 写到Channel(channel.write(原创 2016-01-24 11:22:06 · 667 阅读 · 0 评论 -
NIO缓冲区(3)之分散(Scatter)/聚集(Gather)、通道之间的数据传输和选择器(Selector)
分散(Scatter)/聚集(Gather)分散(scatter):从Channel中读操作时将读取的数据写入多个buffer中。即,Channel将从Channel中读取的数据“分散(scatter)”到多个Buffer中。 聚集(gather):写入Channel是指在写操作时将多个buffer的数据写入同一个Channel,即,Channel 将多个Buffer中的数据“聚集(gat转载 2016-01-24 11:29:00 · 566 阅读 · 0 评论 -
ThreadPoolExecutor详解
ThreadPoolExecutor详解ThreadPoolExecutor的完整构造方法的签名是:ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,long keepAliveTime, TimeUnit unit,BlockingQueue workQueue, ThreadFactory threadFactory,Re转载 2016-01-24 11:07:42 · 551 阅读 · 0 评论 -
java锁(2)ReentrantReadWriteLock
ReentrantReadWriteLock1. 特点:ReentrantReadWriteLock是一个读写锁,它提供了一个读锁和一个写锁,读锁用于只读操作,而写锁用于写入操作,读操作可以并行进行,而写操作则是互斥的。读锁和写锁的分离在一些写少读多的应用中可以带来性能上的提升2. 读锁与写锁的约束关系1) 当任一线程持有写锁或读锁时,其他线程原创 2016-01-24 11:05:56 · 293 阅读 · 0 评论 -
java锁(1)之ReentrantLock
ReentrantLock1. 特点:1) ReentrantLock提供了两种锁:公平锁和非公平锁。2) ReentrantLock是可重入的:一个线程可以多次调用lock成功,但要求调用了多少次lock,就需要对应调用多少次unlock3) ReentrantLock除了实现Lock接口外,还提供了一些辅助的方法,如:is原创 2016-01-24 11:00:11 · 513 阅读 · 0 评论 -
AQS的原理(1)
AQSAQS中同步状态其中state表示同步状态,为32位整数,用来表示锁的数量。AQS主体流程AQS中提供了获取和释放锁有两种模式:独占式和共享式。1. 独占模式:1) acquire:以独占的模式获取对象,忽略中断。2) acquireInterruptibly:以独占模式获取对象,如果中断则停止。3) release:以独占模式释放对象。原创 2016-01-24 10:56:46 · 612 阅读 · 0 评论 -
ConcurrentHashMap原理(2)之用分离锁实现多个线程间的并发写操作
ConcurrentHashMap 类ConcurrentHashMap 在默认并发级别会创建包含 16 个 Segment 对象的数组。每个 Segment 的成员对象 table 包含若干个散列表的桶。每个桶是由 HashEntry 链接起来的一个链表。如果键能均匀散列,每个 Segment 大约守护整个散列表中桶总数的 1/16。下面是 ConcurrentHashMap 的原创 2016-01-24 10:52:40 · 4776 阅读 · 0 评论 -
ConcurrentHashMap 原理(1)之内部类HashEntry 、Segment
ConcurrentHashMap 的结构分析ConcurrentHashMap 类中包含两个静态内部类 HashEntry 和 Segment。HashEntry 用来封装映射表的键 / 值对;Segment 用来充当锁的角色,每个 Segment 对象守护整个散列映射表的若干个桶。每个桶是由若干个 HashEntry对象链接起来的链表。一个 ConcurrentHashMap 实例中包含由转载 2016-01-24 10:47:40 · 8575 阅读 · 1 评论 -
阻塞队列BlockingQueue的核心方法
BlockingQueue的核心方法:1. 放入数据:1) offer(anObject):表示如果可能的话,将anObject加到BlockingQueue里,即如果BlockingQueue可以容纳,则返回true,否则返回false.(本方法不阻塞当前执行方法的线程)2) offer(E o, long timeout, TimeUnit unit),可以设定原创 2016-01-24 10:43:16 · 683 阅读 · 0 评论 -
最常用的 Eclipse 快捷键总结
本文是一些最实用、最齐全、最省时间的 Eclipse 快捷键总结,这些快捷键可以让帮助你完成工作中的任何一个操作。欢迎参考。 1. ctrl+shift+r:打开资源 这可能是所有快捷键组合中最省时间的了。这组快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask名中的前几个字母,比如applic*.xml。美中不足的是这组快捷键并非在所有视图下都能用。转载 2016-05-09 19:09:35 · 572 阅读 · 0 评论