并发编程
nch_ren
工作13年,7年银行、互联网金融系统架构设计与开发
展开
-
零拷贝原理
什么是零拷贝 CPU不需要再为数据在内存之间拷贝而消耗资源。通常指计算机在网络上传输数据时,不需要把数据拷贝到用户空间(User Space) 而直接在内核空间将数据传输到网络上的方式。零拷贝的优点 减少不必要的CPU拷贝; 减少内存带宽的占用; 减少用户空间和内核空间的上下文切换。预备知识 在理解零拷贝之前需要先了解一下两种I/O读写方式 1.I/O中断方式 使用这种方式应用程序与磁盘之间的I/O操作,都是通过CPU的中断来完成的,...原创 2020-09-10 21:52:35 · 318 阅读 · 0 评论 -
ThreadLocal实现原理与应用
1.ThreadLocal的概念 ThreadLocal即线程本地变量,或者称为线程变量。它是一个以ThreadLocal对象为key,任意对象为value的存储结构。这个存储结构附属在某个线程上。也就是说一个线程可以根据一个ThreadLocal对象查询到绑定在这个线程上的值。也就是说ThreadLocal为变量在每个线程中都创建了一个副本,这样每个线程可以访问属于自己的变量副本,对这个变量副本的操作只会影响到该线程自身的数据,不会对其他线程中的数据造成影响。2.ThreadLoca...原创 2020-09-06 12:29:08 · 290 阅读 · 1 评论 -
synchronized的实现原理
Synchronized很多人称呼其为重量级锁,随着JAVA6对synchronized进行了各种优化,减少了获得锁和释放锁的性能消耗,引入了偏向锁和轻量级锁,以及锁的存储结构和升级过程。Synchronized同步基础:1.对于普通方法,锁是当前实例对象;2.对于静态同步方法,锁是当前类的Class对象;3.对于同步方法块,锁是Synchronized括号里配置的对象。Synchronized实现原理JVM基于进入和退出Monitor对象来实现方法同步和代码块同步,但两者的实现细节原创 2020-09-02 17:50:02 · 185 阅读 · 0 评论 -
volatile实现可见性的原理
在java并发编程中,一定绕不开volatile、synchronized和lock几个关键字,其中volatile关键字是用来解决共享变量(类成员变量、类的静态成员变量等)的可见性问题的,非共享变量(方法的局部变量)是分配在JVM虚拟机的栈中,是线程私有的,不涉及可见性问题。那么什么是可见性?可见性在JAVA规范中是这样定义的:java编程语言允许线程访问共享变量,为了确保共享变量能被准原创 2017-12-28 17:50:19 · 11618 阅读 · 4 评论