
java并发编程
文章平均质量分 69
java中并发编程相关
,Mr.刘
目标劝退师
展开
-
java并发编程-无解阻塞队列LinkedBlockingQueue
LinkedBlockingQueue与ArrayBlockingQueue的差别在数据结构,一个是链表,一个是数组,逻辑上没有太大差别,可以去看看我的另一篇文章。原创 2023-05-23 16:23:26 · 68 阅读 · 0 评论 -
java并发编程-有界阻塞队列ArrayBlockingQueue
条件锁的实现为上边这个类,也是AQS下的条件锁其实是AQS提供的一个特殊锁,允许用户在任意地方阻塞,在任意地方解阻塞用户只需根据自己的条件去判断使用,所以它才叫条件锁。原创 2023-05-23 16:08:22 · 166 阅读 · 0 评论 -
java并发编程-线程池
把自己当成了一个线程,传进newThread中了,所以上边的start方法,其实是执行worker的run方法。因为worker、生成的线程、用户提交的线程,全部都是现成,所以会造成思绪乱,被绕进去的感觉。可以看到,如果设置了线程最大存活时间,则使用线程最大存活时间去拉取,否则,直接阻塞拉取。可以看到,其实实际执行的是用户提交的线程中的run方法。可以看到,用户提交的任务被当成了普通的成员变量了。因为线程池的代码太多,就只列举出来重要的部分。那么看来,核心部分应该是在提交线程的地方了。原创 2023-05-20 19:02:51 · 153 阅读 · 0 评论 -
java并发编程-ReentranLock详解
ReentranLock实例化对象时,实际使用了它的内部类而点开Sync,可以看到这个类继承了,也就是我们平时所说的AQS而Sync又有两个子类FairSync,如下代码段所示最小节点全类名为java.util.concurrent.locks.AbstractQueuedSynchronizer.Node: shared模式: 独占模式: 队列模式,或者说节点类型,值为上边两个的值,SHARED 或者 EXCLUSIVE: 存储当前节点对应的线程: 同步状态、锁类型、节点类型,原创 2023-05-20 16:13:53 · 395 阅读 · 1 评论 -
java并发编程-synchronized锁升级
因为synchronized是不公平锁,而且会有锁升级过程,升级为重量级锁时由于操作系统介入导致性能下降,所以synchronized一般会应用在线程争抢不激烈、程序执行时间较快的地方。原创 2023-04-14 10:39:26 · 92 阅读 · 0 评论