摘要: AIO中的A即Asynchronous,AIO即异步IO。它是异步非阻塞的,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理,一般我们的业务处理逻辑会变成一个回调函数,等待IO操作完成后,由系统自动触发。 在进行读写操作时,只需直接调用API的read/write方法即可。这两 阅读全文
posted @ 2019-08-28 21:18 CodingDiary 阅读(735) 评论(0) 推荐(0) 编辑
摘要: 从Java1.4开始,为了替代Java IO和网络相关的API,提高程序的运行速度,Java提供了新的IO操作非阻塞的API即Java NIO。NIO中有三大核心组件:Buffer(缓冲区),Channel(通道),Selector(选择器)。NIO基于Channel(通道)和Buffer(缓冲区) 阅读全文
posted @ 2019-08-26 21:52 CodingDiary 阅读(1373) 评论(2) 推荐(0) 编辑
摘要: 阻塞IO的含义 阻塞(blocking)IO :阻塞是指结果返回之前,线程会被挂起,函数只有在得到结果之后(或超时)才会返回 非阻塞(non-blocking)IO :非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回 同步(synchronous)IO :应用 阅读全文
posted @ 2019-08-22 20:15 CodingDiary 阅读(812) 评论(0) 推荐(0) 编辑
摘要: OSI网络七层协议 为使不同计算机厂家的计算机能够互相通信,以便在更大的范围内建立计算机网络,有必要建立一个国际范围的网络体系结构标准。OSI网络七层协议就是在这个基础上制定出来的,其从最底层开始依次是物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。 各层主要功能 物理层:使原始的数据比 阅读全文
posted @ 2019-08-14 20:11 CodingDiary 阅读(1828) 评论(0) 推荐(0) 编辑
摘要: FutureTask FutureTask是Future的实现,用来异步任务的获取结果,可以启动和取消异步任务,查询异步任务是否计算结束以及获取最终的异步任务的结果。通过get()方法来获取异步任务的结果,但是会阻塞当前线程直至异步任务执行结束。一旦任务执行结束,任务不能重新启动或取消,除非调用ru 阅读全文
posted @ 2019-08-11 21:02 CodingDiary 阅读(586) 评论(0) 推荐(0) 编辑
摘要: List,Set,Queue都是继承Collection接口的单列集合接口。List常用的实现主要有ArrayList,LinkedList,List中的数据是有序可重复的。Set常用的实现主要是HashSet,Set中的数据是无序不可重复的。Queue常用的实现主要有ArrayBlockingQu 阅读全文
posted @ 2019-08-05 20:21 CodingDiary 阅读(458) 评论(0) 推荐(0) 编辑
摘要: java.util.Map接口是JDK1.2开始提供的一个基于键值对的散列表接口,其设计的初衷是为了替换JDK1.0中的java.util.Dictionary抽象类。Dictionary是JDK最初的键值对类,它不可以存储null作为key和value,目前这个类早已不被使用了。目前都是在使用Ma 阅读全文
posted @ 2019-07-29 20:48 CodingDiary 阅读(1225) 评论(0) 推荐(0) 编辑
摘要: ReadWriteLock接口 读写锁维护一对关联锁,一个只用于读操作,一个只用于写操作。读锁可以由多个线程同时持有,又称共享锁。写锁同一时间只能由一个线程持有,又称互斥锁。同一时间,两把锁不能被不同线程持有。读写锁适合读取操作多于写入操作的场景,改进互斥锁的性能,比如集合的并发安全性改造,缓存组件 阅读全文
posted @ 2019-07-28 22:23 CodingDiary 阅读(405) 评论(0) 推荐(1) 编辑
摘要: locks包结构层次 Lock 接口 方法签名描述 void lock(); 获取锁(不死不休) boolean tryLock(); 获取锁(浅尝辄止) boolean tryLock(long time, TimeUnit unit) throws InterruptedException; 获 阅读全文
posted @ 2019-07-25 21:20 CodingDiary 阅读(554) 评论(0) 推荐(1) 编辑
摘要: Java中锁的概念 自旋锁 : 是指当一个线程在获取锁的时候,如果锁已经被其他线程获取,那么该线程将循环等待,然后不断判断锁是否能够被成功获取,直到获取到锁才会退出循环。 乐观锁 : 假定没有冲突,在修改数据时如果发现数据和之前获取的不一致,则读最新数据,修改后重试修改 悲观锁 :假定会发生并发冲突 阅读全文
posted @ 2019-07-23 22:54 CodingDiary 阅读(1697) 评论(2) 推荐(1) 编辑