线程安全的三要素 原子性 可见性 有序性 synchronized和各种锁可以保证原子性和可见性 volatile可以保证可见性和有序性,也就是防止指令重排 ![]() volatile threadlocal nio 阻塞和非阻塞 同步和异步 线程同步是有序性,就是sync,就是顺序执行 同步io也是这个意思, 异步io,可以做其他事情 并行 并发 并行,表示两个线程同时做事情。多核才可以 并发,表示一会做这个事情,一会做另一个事情,存在着调度。 concurrenthashmap是分段锁 java阻塞io 你读取数据的时候,你不能干别的 你写入数据的时候也不能干别的。 java nio NIO主要有三大核心部分:Channel(通道),Buffer(缓冲区), Selector。传统IO基于字节流和字符流进行操作,而NIO基于Channel和Buffer(缓冲区)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。Selector(选择区)用于监听多个通道的事件(比如:连接打开,数据到达)。因此,单个线程可以监听多个数据通道。 java nio把数据写入缓冲区就直接完事了,然后监听器监听是否成功即可。。 java nio发送一个读取请求就完事了,然后监听器监听是否成功。。 监听器是不是就是轮询的实现。。 |
|