java多线程
文章平均质量分 78
呆呆鸟.
这个作者很懒,什么都没留下…
展开
-
每天一个小细节:什么是CAS
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAAH6ji2bAAAABGdBTUEAALGPC/xhBQAAAMZJREFUOBFjYBgA0N3dvQhmLROMAaTtYGxkQZgYA/GCcC3IDKClD5D5IDZWI9EVgfiMUCfDXQhVJAOkn0DZuCmKrMYwtquray6GIFAAwzOMjIzORCnEpggkhmEixQpB4fgA2ZT////LA935EFkMyD6ExmdgAPr6P4YgUI原创 2022-10-04 11:05:12 · 459 阅读 · 0 评论 -
每天一个小细节:synchronized的优化策略
偏向锁不是真的加锁,而是一种标志位,它用一个标志记录当前是哪个线程获取的锁,如果这时真的有其他线程也想来获取这把锁,查看标志位发现这把锁已经被占用了,同时锁升级为轻量级锁。锁粗化是指,你一个线程重复多次的获取释放同一把锁,编译器和jvm就认为你可以一个获取到之后,直到全部事情做完再释放,而不再是做一部分就释放,然后再获取。锁消除,即编译器和jvm检测到你加锁的某块代码不涉及线程安全问题,没必要加锁,就自动帮你消除了加锁的步骤。这样做的目的就是为了减少多次获取锁和释放锁的开销,使得锁粒度由细变粗。原创 2022-10-03 10:10:29 · 565 阅读 · 0 评论 -
又是一个小细节:面试常考的十种锁策略与synchronized涉及锁策略
锁策略主要是用于实现锁的,那么有哪些锁经常在面试中出现呢?原创 2022-10-02 10:44:18 · 396 阅读 · 0 评论 -
每天一个小细节:线程死锁的原因与处理方法
死锁是指一个线程持有锁对象,却迟迟不释放或无法释放,而导致其他线程想要这个锁,却得不到而无限的阻塞,从而导致程序无法继续进行。原创 2022-10-01 11:19:54 · 566 阅读 · 0 评论 -
面试被问到HashTable, HashMap, ConcurrentHashMap 之间最大的区别是什么,我说名字不同,面试官让我回去等意向书
就线程安全来说,可分为两类线程安全:HashTable, ConcurrentHashMap线程不安全:HashMap我们是如何知道这些类哪个线程安全,哪个不安全的呢?通过查验原码可以发现:HashMap的添加和删除,读等并没有加锁,在多线程下存在线程安全问题而其余两个类的方法都有加锁,以put方法为例HashTable(put 方法):ConcurrentHashMap的putVal方法:那么 HashTable和ConcurrentHashMap的区别又是什么呢?原创 2022-09-26 22:57:41 · 166 阅读 · 2 评论 -
JavaEE初阶第一课:多线程总结,一篇文章快速入门多线程
想要知道为什么要有线程,必须要先了解什么是进程。线程又被称为“轻量化进程”,可能线程是什么并不好说清楚,在这里打个比方大家就明白了:如果说进程是工厂,那么线程就是工厂里面的各种流水线,他们共同占据着工厂里面的空间。从这个例子就可以发现:进程>线程,更准确来说,一个进程包含多个线程,而这多个线程共同占据着这个进程的内存空间,并且每个进程至少有一个线程存在,即主线程(我们的java程序大多主线程是main线程)。原创 2022-09-24 21:48:12 · 580 阅读 · 7 评论