
多线程与高并发
文章平均质量分 94
多线程与高并发
蝉沐风的码场
这个作者很懒,什么都没留下…
展开
-
CPU流水线与指令重排序
本来`synchronized`和`volatile`关键字用得好好的,我非要深入研究一下他们的原理,所以研究了内存屏障,又研究了和内存屏障相关的`MESI`,又研究了`Cache Coherence`和`Memory Consistency`,发现一切问题都出在CPU身上。于是又惊叹Java一次编写到处运行的特性,最终又研究到`JMM`。说是研究,其实就是把学习过程中自己抛出来的问题解决掉,把所有知识穿成一条线罢了。这条线的线头就从指令的乱序执行开始了。原创 2022-09-06 08:08:27 · 919 阅读 · 0 评论 -
缓存一致性MESI与内存屏障
计算机的演进就是一部在挖坑和填坑之间反复横跳的发展史。对这一点的理解会随着本文的后续讲述逐渐加深。比如高速缓存Cache很好地解决了CPU与内存的速度矛盾,但是也为计算机系统带来了更高的复杂度。...原创 2022-07-27 07:59:37 · 2227 阅读 · 14 评论 -
用闪电侠的例子解释一下进程和线程
用闪电侠举个例子,给你解释一下进程和线程原创 2022-05-19 10:41:44 · 308 阅读 · 0 评论 -
线程中断之-interrupt()、isInterrupted()、interrupted()
线程中断是线程通讯的一种手段,设置线程的中断标识并不意味着该线程会立即挂起,相反,如果该线程对自己的中断标识的变化不采取任何手段,则该中断标识将没有任何意义,程序将继续向下运行。主要涉及到三个主要API。1. interrupt()1.1 测试中断之后线程是否会继续执行public static void main(String[] args) throws InterruptedExce...原创 2019-08-26 14:43:30 · 407 阅读 · 0 评论 -
Netty writeAndFlush在循环中的并发问题
需求如下:用户登录之后根据当前用户绑定的设备号(只有一个且号码唯一)进行websocket连接,并将设备号(deviceNumber)上传给websocket服务器。服务器接收到设备的实时报文后进行一定的封装处理,最后传回到websocket客户端一开始的做法如下:在服务器端创建了两个缓存对象,分别是Map<String,Set<ChannelHandlerContext&...原创 2019-11-25 15:28:54 · 3211 阅读 · 1 评论