Java
-
PriorityQueue源码分析
总结 总结放前面防止太长不看: PriorityQueue是个最小堆,如果要改变排序顺序只能重写比较器传入构造方法。 内部元素要么实现Comparable接口,要么传入比较器进行比…
-
网络编程之AIO
AIO介绍 AIO是JDK1.7引入的,也称为NIO 2.0 NIO的同步非阻塞类似于轮询,让Selector去询问各个通道的状态。 而AIO则是通过Future实现真正的异步,让…
-
基于NIO模型改进多人聊天室
第一版和第二版见基于BIO模型实现多人聊天室 NIO介绍见: NIO、BIO模型对比实现文件的复制NIO网络编程之Selector介绍 第三版:使用NIO模型改进 服务端实现 pu…
-
NIO网络编程之Selector介绍
Selector 要实现异步IO要通过Selector,甚至我们可以通过一个线程管理多个Channel的读写,这是NIO相较BIO的优越之处之一。 Channel可以注册到一个Se…
-
NIO、BIO模型对比实现文件的复制
NIO特点 使用Channel代替Stream,是双向的 使用Selector监控多条Channel 可以在一个线程里处理多个Channel I/O Channel和Buffer …
-
JUC包下的线程协作计数CountDownLatch及CyclicBarrier
CountDownLatch 概述 用来进行线程同步协作,等待所有线程完成倒计时。 其中构造参数用来初始化等待计数值,await() 用来等待计数归零,countDown() 用来…
-
JUC包下的信号量Semaphore
概述 信号量,用来限制能同时访问共享资源的线程上限。 public static void main(String[] args) { // 1. 创建 semaphore 对象 …
-
基于BIO模型实现多人聊天室
第一版 服务端实现: public class ChatServer { private int DEFAULT_PORT = 8888; private final String…
-
JUC包下的读写锁ReentrantReadWriteLock以及StampedLock
ReentrantReadWriteLock 概述 当读操作远远高于写操作时,这时候使用 读写锁 让 读-读 可以并发,提高性能。 类似于数据库中的 select ... from…
-
Java网络套接字Socket编程
Socket概述 Socket,译作网络套接字,是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。网络套接字与一个应用进程(ip和端口号)绑定。 Socket与Ser…