并发编程
文章平均质量分 94
并发编程
猪大侠0.0
这个作者很懒,什么都没留下…
展开
-
JUC并发编程最新面试题(持续更新)
多线程:多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务。多线程的好处: 可以提高 CPU 的利用率。在多线程程序中,一个线程必须等待的时候,CPU 可以运行其它的线程而不是等待,这样就大大提高了程序的效率。也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。线程也是程序,所以线程需要占用内存,线程越多占用内存也越多;多线程需要协调和管理,所以需要 CPU 时间跟踪线程;线程之间对共享资源的访问会相互影响,必须解决竞用共享资源的问 题。原创 2024-02-23 20:24:06 · 919 阅读 · 0 评论 -
java CAS详解(深入源码剖析)
CAS是compare and swap的缩写,即我们所说的比较交换。该操作的作用就是保证数据一致性、操作原子性。cas是一种基于锁的操作,而且是`乐观锁`。在java中锁分为乐观锁和悲观锁。悲观锁是将资源锁住,等之前获得锁的线程释放锁之后,下一个线程才可以访问。而`乐观锁`采取了一种宽泛的态度,通过某种方式不加锁来处理资源,比如通过给记录加`version`来获取数据,性能较悲观锁有很大的提高。CAS 操作包含三个操作数 —— 内存位置(V)、预期原值(A)和新值(B)。如果内存地址里面的值和A的值是原创 2023-09-19 22:00:29 · 390 阅读 · 0 评论 -
AQS同步队列和等待队列的同步机制
理解AQS必须要理解同步队列和等待队列之间的同步机制,简单来说流程是:获取锁失败的线程进入同步队列,成功的占用锁,占锁线程调用await方法进入条件等待队列,其他占锁线程调用signal方法,条件等待队列线程进入同步队列排队。去银行办理业务,需要排队、在窗口办理、费时间的有专员带你去小屋办理。awaitsignal同步队列。AQS维护的队列是当前等待资源的队列,即获取锁失败的线程。每个Condition维护着一个队列,该队列的作用是维护一个等待singal信号的队列。原创 2023-09-09 17:03:03 · 295 阅读 · 1 评论 -
AQS源码剖析,完整流程解读
AQS是什么?AQS即AbstractQueuedSynchronizer缩写,翻译为抽象队列同步器,是一种用来构建锁和同步器的框架。 平时使用较多的ReentrantLock、CountDownLatch就是基于AQS实现。AQS基于CLH队列分配的模式有两种:默认*独占*模式和*共享*模式AQS完整流程解读,获取锁、释放锁、await等待、signal,同步队列和等待队列的转换原创 2023-09-09 15:31:10 · 160 阅读 · 0 评论