
Java
文章平均质量分 87
老陆的笔记本
这个作者很懒,什么都没留下…
展开
-
java 锁相关知识总结
synchronized是一个同步关键字,是可重入的、独享的、悲观锁、非公平锁,在某些多线程并发改变临界资源(共享数据)场景下,如果不进行同步会导致数据不安全,而synchronized关键字就是用于代码同步。synchronized修饰普通同步方法锁对象是当前实例对象;synchronized修饰静态同步方法锁对象是当前的类Class对象;synchronized修饰同步代码块synchronized修饰普通同步方法锁对象是当前实例对象;synchronized修饰静态同步方法。......原创 2022-07-26 22:36:35 · 271 阅读 · 1 评论 -
Java 线程池知识总结
在程序中经常需要用到多线程处理一些任务,这时候不建议单纯使用Thread或者实现Runnable接口的方式来创建线程,因为创建和销毁线程、和线程的上下文切换是需要耗费资源的,另一方面不加限制的创建线程可能导致系统资源耗尽。所以需要使用多线程的场景建议使用线程池,使用线程池会带来以下好处:创建一个固定大小的线程池,因为采用无界的阻塞队列,所以实际线程数量永远不会变化,适用于负载较重的场景,对当前线程数量进行限制。(保证线程数可控,不会造成线程过多,导致系统负载更为严重)使用的构造方式为new Threa原创 2022-06-27 00:02:53 · 850 阅读 · 0 评论 -
volatile 可见性与指令重排
现在的CPU都是多核,程序可以在多核上并行执行,指令在执行时,数据会从主存拷贝好CPU的各级缓存上,执行完之后在写回到主存上,此时同一个变量可能在两个核上被操作,该变量在两个拷贝分布在两个核上,此时就会出现问题,比如简单的自增操作,就会是你做你的,我做我的,最后结果会偏离预期。 使用volatile修饰共享变量后,每个线程要操作变量时,会把变量拷贝到缓存中,当线程操作变量副本写回主存后,会通过CPU总线嗅探机制告知其他线程该变量副本已经失效,需要从主存中重新获取。 总线嗅探机制:CPU和内存有极大速原创 2022-06-19 00:06:08 · 444 阅读 · 0 评论 -
双重校验锁单例为什么这样写
详解双重校验锁的实现原创 2022-06-10 00:28:43 · 122 阅读 · 0 评论