![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
文章平均质量分 89
Lzm_0.0
Hello world 是怎么来的?
展开
-
锁策略以及CAS和Synchronized的优化过程
全称Compare and swap ,字面意思:比较并交换",一个CAS涉及到以下操作:假设内存中的原数据V,旧的预期值A,需要修改的新值B比较A与V是否相等.(比较)如果相等,把B写入V (交换)返回操作是否成功两种典型的不是原子性的代码check and set (if 判定然后设定值)当多个线程同时对某个资源进行CAS操作,只能有一个线程操作成功,但是并不会阻塞其他线程,其他线程只会收到操作失败的信号CAS可以视为是一种乐观锁,(或者可以理解为CAS是乐观锁的一种实现方式)原创 2023-04-15 17:19:38 · 129 阅读 · 0 评论 -
死锁(死锁的原因和如何避免死锁)
死锁是指两个或多个进程(或线程)彼此互相占用对方需要的资源而陷入一种无限等待的状态。当多个进程同时请求互斥的资源时,如果每个进程都持有至少一项资源并等待其他进程释放其资源,那么这些进程就会形成死锁。假设进程 A 持有资源 b,同时需要资源 a,而进程 B 则持有资源 b,同时需要资源 a,这时候如果进程 A 和进程 B 都不释放它们已经占有的资源,那么它们就会陷入无限等待的状态,从而形成死锁。这样的话,这两个进程都无法继续执行,也无法释放资源,从而导致整个系统无法运转。可以对应下面的图进行理解。原创 2023-04-13 14:41:40 · 239 阅读 · 1 评论 -
HashTable, HashMap, ConcurrentHashMap 之间的区别
就如下图是用一把锁锁住了整个哈希表如果多线程访问同一个 Hashtable 就会直接造成锁冲突.size 属性也是通过 synchronized 来控制同步, 也是比较慢的.一旦触发扩容, 就由该线程完成整个扩容过程. 这个过程会涉及到大量的元素拷贝, 效率会非常低.虽然他是线程安全的,但是如果两个线程去同时进行操作哈希表时,他就会产生阻塞等待其底层实现采用同步方法来保证线程安全。因此,它的性能相对较低,特别是在高并发环境下,由于每个方法都需要获取锁,因此会导致性能下降。原创 2023-04-12 17:55:02 · 60 阅读 · 1 评论 -
详解线程池
线程池是一种优化多线程应用程序的重要技术原创 2023-04-11 15:39:21 · 77 阅读 · 0 评论