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

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方法,可重试

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

一些内存模型、并发、netty知识点的记录的更多相关文章

  1. Java内存模型---并发编程网 - ifeve.com

    Java内存模型 转自:http://ifeve.com/java-memory-model-6/ 原文地址  作者:Jakob Jenkov 译者:张坤 Java内存模型规范了Java虚拟机与计算机 ...

  2. 【Java并发编程】6、volatile关键字解析&内存模型&并发编程中三概念

    volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在Java 5之后,volatile关键字才得以 ...

  3. java内存模型(netty权威指南)

    1.Java内存模型 Java虚拟机规范中试图定义一种java内存模型(java Memory Model,jmm)来屏蔽掉各种操作系统.虚拟机实现厂商和硬件的内存访问差异,以确保Java程序在所有操 ...

  4. volatile关键字解析&内存模型&并发编程中三概念

    原文链接: http://www.cnblogs.com/dolphin0520/p/3920373.html volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java5之前,它是一个 ...

  5. Java 线程 — JMM Java内存模型

    JMM Java Memory Model,Java内存模型,属于语言级的内存模型 并发编程中存在的问题: 如何通信:用于线程之间交换信息.两种方式:共享内存,消息传递 如何同步:用于控制不同线程间操 ...

  6. JVM-7.Java内存模型与高效并发

    更多内容参见<并发与同步>系列 一.引子 二.JMM 三.Java中的线程 四.线程安全 五.锁优化       一.引子 运算能力 摩尔定律:晶体管数量,代表的CPU的频率 Amdahl ...

  7. JVM学习记录-Java内存模型(二)

    对于volatile型变量的特殊规则 关键字volatile可以说是Java虚拟机提供的最轻量级的同步机制. 在处理多线程数据竞争问题时,不仅仅是可以使用synchronized关键字来实现,使用vo ...

  8. 并发编程之 Java 内存模型 + volatile 关键字 + Happen-Before 规则

    前言 楼主这个标题其实有一种作死的味道,为什么呢,这三个东西其实可以分开为三篇文章来写,但是,楼主认为这三个东西又都是高度相关的,应当在一个知识点中.在一次学习中去理解这些东西.才能更好的理解 Jav ...

  9. java内存模型知识点汇总

    1.像windows/linux这种操作系统中,自带jvm么?以方便java程序的运行? 答:是的,一般操作系统都自带jvm的.但不带jdk,也就是说java的运行环境有,但编译环境没有. 1.jav ...

随机推荐

  1. 视频加载logo 2

    推荐这个网站 http://www.flaticon.com/ http://www.flaticon.com/search?word=spinner  旋转图标 http://www.flatico ...

  2. TinyOS编程思想和Nesc基础语法

    TinyOS操作系统由nesc语言写成,从程序员角度看,它的基本作用就是提供了一组API接口以及一些编程规则. 具体来说,基于nesc语言的TinyOS编程行为具有以下特点: a.兼容C语言:使用ne ...

  3. Java基础笔记7

    OOP面向对象有三个特点 1.封装 封装的好处: 起到一定的保护作用  封装的是属性. java如何进行封装; 1.使用private关键字对象属性封装. 只能在本类中使用.  2.为每个属性提供方法 ...

  4. Vue源码后记-更多options参数(1)

    我是这样计划的,写完这个还写一篇数据变动时,VNode是如何更新的,顺便初探一下diff算法. 至于vue-router.vuex等插件源码,容我缓一波好吧,vue看的有点伤. 其实在之前讲其余内置指 ...

  5. Strtus2框架笔记

    Struts2以WebWork优秀的设计思想为核心,吸收了 Struts框架的部分优点,提供了一个更加整洁的MVC设计模式实现的Web 应用程序框架. Struts2引入了几个新的框架特性:从逻辑中分 ...

  6. Muduo阅读笔记--base(二)

    上一篇文章对muduo的入门做了介绍. http://www.cnblogs.com/LCCRNblog/p/5668035.html base文件夹下这么多代码,该如何入手呢?对于我这种第一次接触大 ...

  7. 定制rpm包---Yum环境搭建

    1.1 在yum服务器上创建yum仓库命令 mkdir -p /application/nginx/html/yum cd /application/nginx/html/yum rz #上传rpm包 ...

  8. YARN作业运行机制

    在传统的MapReduce中, Jobtracker同时负责作业调度(将任务调度给对应的tasktracker)和任务进度管理(监控任务, 重启失败的或者速度比较慢的任务等). YARN中将Jobtr ...

  9. js判断对象还是数组

    1.对于Javascript 1.8.5(ECMAScript 5),变量名字.isArray( )可以实现这个目的 var a=[]; var b={}; Array.isArray(a);//tr ...

  10. ML神器:sklearn的快速使用

    传统的机器学习任务从开始到建模的一般流程是:获取数据 -> 数据预处理 -> 训练建模 -> 模型评估 -> 预测,分类.本文我们将依据传统机器学习的流程,看看在每一步流程中都 ...