Update 集合源码.md

master
Omooo 4 years ago
parent 5842a13147
commit c795b15996
  1. 4
      blogs/Java/口水话/集合源码.md

@ -142,11 +142,13 @@ LinkedBlockingQueue 内部构成简单来说,可以分为三个部分:链表
LinkedBlockingQueue 主要用在线程池中,当我们使用 Executors 的 newFixedThreadPool 或 newSingleThreadPool 创建线程池时,阻塞队列用的就是 LinkedBlockingQueue,但是通常我们不建议这样直接使用 Executors 创建线程池,因为 LinkedBlockingQueue 的默认队列大小是 Integer.MAX_VALUE,可能会爆内存。 LinkedBlockingQueue 主要用在线程池中,当我们使用 Executors 的 newFixedThreadPool 或 newSingleThreadPool 创建线程池时,阻塞队列用的就是 LinkedBlockingQueue,但是通常我们不建议这样直接使用 Executors 创建线程池,因为 LinkedBlockingQueue 的默认队列大小是 Integer.MAX_VALUE,可能会爆内存。
在 Android 中,AsyncTask 在核心线程池不够用的情况下触发任务拒绝策略时,会用到 LinkedBlockingQueue。AsyncTask 它使用是一个单线程池, 在 Android 中,AsyncTask 在核心线程池不够用的情况下触发任务拒绝策略时,会用到 LinkedBlockingQueue。
#### SynchronousQueue #### SynchronousQueue
SynchronousQueue 是一个不存储元素的阻塞队列,每一个 put 操作必须等待 take 操作,否则不能添加元素。在使用 Executors 的 newCachedThreadPool 创建线程池用的就是它,在 AsyncTask 创建的一个单线程池用的也是它,核心线程数为 1,最大线程数为 20,非核心线程空闲存活时间为三秒,适合任务多但是执行比较快的场景中。
源水太深了,还没看明白,待定。
#### SparseArray #### SparseArray

Loading…
Cancel
Save