多线程
文章平均质量分 93
狂奔的蜗牛已被占用
这个作者很懒,什么都没留下…
展开
-
SynchronousQueue的transfer方法分析(JDK1.8)
存入,获取元素都是调用同一个方法,那么它是如何分辨出方法的调用者到底是存入元素还是要取出元素呢?transfer方法有3个参数,这三个参数分别表示: 在SynchronousQueue内部transfer方法有2种实现:TransferQueue,TransferStack。在创建SynchronousQueue对象时可以选择transfer方法的实现类: TransferQueue 是一个链表结构,在Transfer原创 2022-09-21 15:36:42 · 595 阅读 · 0 评论 -
DelayQueue(JDK1.8)------ take的源码分析
从PriorityQueue优先队列分析,PriorityQueue将元素构建成堆结构这样可以快速从队列中按优先顺序将元素取出。在DelayQueue中,主要是判断从PriorityQueue取出的时机。判断阻塞线程,以及将线程从条件队列中唤醒的时机。原创 2022-09-18 07:53:44 · 768 阅读 · 0 评论 -
AbstractQueuedSynchronizer---condition队列的await方法中为什么要释放锁(JDK1.8)
前言。原创 2022-09-14 13:12:54 · 1298 阅读 · 2 评论 -
AbstractQueuedSynchronizer(JDK1.8)中关于锁的获取和释放的源码分析
前言。原创 2022-09-02 04:58:59 · 459 阅读 · 0 评论 -
ConcurrentHashMap(JDK1.8)的扩容方法transfer的源码分析
ConcurrentHashMap扩容过程的源码分析;对ConcurrentHashMap迁移数据过程中,多线程如何协作?链表类型如何迁移?红黑树如何迁移?如何确保数据完成迁移?对ConcurrentHashMap可能存在数据丢失的情况。原创 2022-06-15 07:27:46 · 2860 阅读 · 10 评论 -
ConcurrentHashMap(JDK1.8)put分析(一)
ConcurrentHashMap和HashMap的put值过程有些类似,ConcurrentHashMap的结构也是table + 链表+ 红黑树;在put值时,锁粒度是table的元素;也就是说,当put值时定位到table的第 i 个元素,那么就会给table[i]上锁;其他线程在put值时也定位到 i 时就需要等待获取锁;如果是其他位置则不需要等待锁,可以进行put操作。 下面具体分析ConcurrentHashMap的put值过程 ConcurrentHashMap在原创 2022-06-02 11:37:27 · 1986 阅读 · 0 评论 -
聊聊同步、异步、阻塞与非阻塞
原文链接原创 2019-08-14 12:18:18 · 104 阅读 · 0 评论 -
ThreadLocal类简单介绍
ThreadThreadLocal的构造方法setgetThreadLocalMapmap.setThreadLocal的构造方法 public ThreadLocal() { }set public void set(T value) { Thread t = Thread.currentThread();//当前线程 ThreadLocalMap map = getMap(t); if (map != null)原创 2021-04-17 03:27:19 · 287 阅读 · 0 评论