一些内存模型、并发、netty知识点的记录

happens-before:描述内存可见性
as-if-serial:不管怎么重排序,程序的运行结果不会改变react

当线程释放锁时,JMM会把该线程对应的本地内存中的共享变量刷新到主内存中,也就是说,对某个对象的加锁,锁释放后影响的是所有的本地内存共享变量 redis

ReentrantLock依赖了队列同步器AQS,其实现方式是volatile变量的读写操做进行线程间通讯,经过CAS修改state值,成功,其state值>0,则取锁成功数组

ConcurrentHashMap:有一个Segment的数组,它继承了ReentrantLock可重入锁的功能,在put时,经过hash及rehash,再取模肯定Segment的index,Segment中有HashEntry数组,才是保存key,value的地方,经过put等修改操做修改mod,计算总数时,在mod不变时不加锁计算,发现mod变化后,加锁计算缓存

DelayQueue,能够保存有效期,可用来实现缓存过时清理安全

Fork/Join,大任务切分子任务,再聚合结果网络

CountDownLatch,等待其余先出完成操做,可用来提示任务结束等多线程

CyclicBarrier,等待多个线程到达同一个屏障后,再一块儿往下仔细,有reset方法,可重试app

Semaphore做为信号量,可控制线程数量,用来管理有限的资源访问优化


多路复用器监听某个端口的事件,把就绪的事件选择集合进行I/O操做线程

ChannelPipeline:Channel数据管道,消息在其中流动传递,就像Filter链表同样,其上能够绑定channelHandler,它是线程安全的,可动态增删handler

Reactor多线程模型:一个NIO线程辅助监听服务端,接受TCP请求
网络IO操做有一个线程池负责

Reactor主从多线程模型:Acceptor:一个NIO线程池负责监听服务端,
sub reactor一个线程池负责IO

netty对网络闪断等问题已经优化,不会形成资源没有关闭,对业务异常进行拦截

ServerHandler、ClientHandler都是ChannelInBoundChannel,能够读取数据

redis备份rdb\aof ,bgSave,重写aof

byteBuffer position,limit

相关文章
相关标签/搜索