摘要: HashMap 为什么是线程不安全的? modCount++ public V put(K key, V value) { if (key == null) return putForNullKey(value); int hash = hash(key.hashCode()); int i = i 阅读全文
posted @ 2020-05-05 21:35 sw_kong 阅读(241) 评论(0) 推荐(0) 编辑
摘要: ArrayBlockingQueue介绍 ArrayBlockingQueue是数组实现的线程安全的有界的阻塞队列。 线程安全是指,ArrayBlockingQueue内部通过“互斥锁”保护竞争资源,实现了多线程对竞争资源的互斥访问。 有界是指,ArrayBlockingQueue对应的数组是有界限 阅读全文
posted @ 2020-05-05 18:38 sw_kong 阅读(2318) 评论(0) 推荐(0) 编辑
摘要: LinkedBlockingQueue介绍 LinkedBlockingQueue是一个单向链表实现的阻塞队列。该队列按 FIFO排序元素,新元素插入到队列的尾部,并且队列获取操作会获得位于队列头部的元素。 此外,LinkedBlockingQueue可以指定队列的容量。如果不指定,默认容量大小等于 阅读全文
posted @ 2020-05-05 17:31 sw_kong 阅读(3562) 评论(0) 推荐(0) 编辑
摘要: 在创建线程池时我们可以指定自己的拒绝策略,如下 什么时候会触发拒绝策略 当我们调用 shutdown 等方法关闭线程池后,如果再向线程池内提交任务,就会遭到拒绝。 线程池没有空闲线程(线程池的线程达到了最大线程数,并且都在执行任务)并且队列已经满了,不能在存放任务了。 拒绝策略 ThreadPool 阅读全文
posted @ 2020-05-05 16:38 sw_kong 阅读(2298) 评论(0) 推荐(0) 编辑
摘要: ThreadPoolExecutor 中关闭线程池的方法 判断线程池状态的方法 shutdown() 调用 shutdown() 方法之后线程池并不是立刻就被关闭,因为这时线程池中可能还有任务正在执行,或是任务队列中有正在等待的任务,它会等待正在执行的任务和队列中等待的任务执行完毕后才彻底关闭。 注 阅读全文
posted @ 2020-05-05 16:15 sw_kong 阅读(1972) 评论(0) 推荐(0) 编辑