![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
文章平均质量分 92
Chen_leilei
头发掉光,技术见长
展开
-
多线程知识点整理
1.线程创建,2.线程运行,3线程阻塞,4.线程等待,5.timed_waiting 6.线程执行完毕。原创 2023-09-21 10:44:54 · 133 阅读 · 0 评论 -
线程池实战以及过程中的坑
Hippo-4[4]:一款强大的动态线程池框架,解决了传统线程池使用存在的一些痛点比如线程池参数没办法动态修改、不支持运行时变量的传递、无法执行优雅关闭。除了支持动态修改线程池参数、线程池任务传递上下文,还支持通知报警、运行监控等开箱即用的功能。:轻量级动态线程池,内置监控告警功能,集成三方中间件线程池管理,基于主流配置中心(已支持 Nacos、Apollo,Zookeeper、Consul、Etcd,可通过 SPI 自定义实现)。原创 2023-07-26 10:58:19 · 165 阅读 · 0 评论 -
线程池的实现原理
至此,我们已经阅读了线程池框架的核心类ThreadPoolExecutor类的大部分源码,由衷地赞叹这个类很多地方设计的巧妙之处:将线程池的运行状态和工作线程数量打包在一起,并使用了大量的位运算使用CAS操作更新线程控制状态ctl,确保对ctl的更新是原子操作内部类Worker类继承了AQS,实现了一个自定义的同步器,实现了不可重入锁使用while循环自旋地从任务缓存队列中获取任务并执行,实现了线程复用机制。原创 2023-07-20 17:16:18 · 531 阅读 · 0 评论 -
Synchronized的实现原理
同步方法通过关键字隐式的对方法进行加锁。当线程要执行的方法被标注上时,需要先获得锁才能执行该方法。同步代码块通过和执行来进行加锁。当线程执行到的时候要先获得所锁,才能执行后面的方法。当线程执行到的时候则要释放锁。每个对象自身维护这一个被加锁次数的计数器,当计数器数字为0时表示可以被任意线程获得锁。当计数器不为0时,只有获得锁的线程才能再次获得锁。即可重入锁。原创 2023-05-08 13:49:23 · 359 阅读 · 0 评论 -
我眼中的并发编程
为了保证共享内存的正确性(可见性,原子性,有序性),内存模型定义了共享内存系统走红多线程程序读写操作的行为的规范。通过这些柜则来规范对内存的读写操作,从而保证指令执行的正确性。它与处理器有关,与并发有关,与编译器也有关。他解决了CPU多级缓存、处理器优化、指令重排等导致的内存访问问题,保证了并发场景下的一致性、原子性和有序性。内存模型解决并发问题主要就是采用两种形式,限制处理器优化和内存屏障。原创 2022-12-29 18:45:26 · 207 阅读 · 0 评论 -
我眼中的Java内存模型
(1)方法区只是一种概念上的区域,并说明了其应该具有什么功能,但是没有规定这个区域到底应该处于何处,不同版本的方法区所处位置不同,并不是绝对意义上的物理区域。(2)运行时常量池用于存放编译器生成的各种字面量和符号应用,但是java语言并不要求常量只有在编译器才能产生。比如在运行期,String.intern也会把新的常量放入池中。原创 2022-12-29 17:52:25 · 352 阅读 · 0 评论