
java并发编程
文章平均质量分 57
java并发编程,总结用
java硕哥
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
相同的字符串可以作为synchronized同步锁对象
相同的字符串可以作为synchronized同步锁对象原创 2022-07-06 23:22:57 · 440 阅读 · 1 评论 -
ArrayBlockingQueue
ArrayBlockingQueue 的内部有一个数组 items原创 2020-07-07 23:18:08 · 121 阅读 · 0 评论 -
JUC Queue
ConcurrentLinkedQueue 是线程安全、无界、非阻塞队列,其底层数据结构使用单向链表实现,对于入队和出队操作使用 CAS 来实现线程安全 。ConcurrentlinkedQueue复习看下表即可Level.放入取出1add入队尾,由于是无界队列,return trueremove队列空?异常:return head2offer同 addpoll队列空?return null:return head3------------pe原创 2020-07-07 17:51:53 · 250 阅读 · 0 评论 -
BlockingQueue - LinkedBlockingQueue常用API
Level.放入取出1add队列满?异常:return trueremove队列空?异常:return head2offer队列满?return false:return truepoll队列空?return null:return head3put队列满?阻塞:return [void]take队列空?阻塞:return headadd、offer、putBlockingQueue 的put、offer、add区别,看注释:Block...原创 2020-07-06 11:29:52 · 686 阅读 · 0 评论 -
Java线程池(3)- JUC Executors 源码分析
JUC Executors 源码分析未完待续,写作中…ThreadPoolExecutor 源码NO.项目二进制ACAPACITY0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1B~CAPACITY1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01RUNNING(-1)1 1 1 0 0 0 0原创 2020-07-05 11:50:57 · 211 阅读 · 0 评论 -
Java线程池(2) - 线程池的功能需求、设计、实现
本节会从软件开发功能需求的角度引出 Java线程池 的功能,后续我们会自己实现这个功能,最后再分析JUC Executors 的源码原创 2020-07-05 11:45:40 · 293 阅读 · 0 评论 -
Java线程池(1) - 问题驱动“Java线程池”学习
下面是几个Java线程池的问题,大家尝试回答一下:1 使用线程池比手动创建线程好在哪里?2 线程池的各个参数的含义?3 线程池有哪 4 种拒绝策略?4 有哪 6 种常见的线程池?什么是 Java8 的 ForkJoinPool?5 线程池常用的阻塞队列有哪些?6 为什么不应该自动创建线程池?7 合适的线程数量是多少?CPU 核心数和线程数的关系?8 如何根据实际需要,定制自己的线程池?9 如何正确关闭线程池?shutdown 和 shutdownNow 的区别?10 线程池实现“线程复用原创 2020-07-05 11:42:21 · 181 阅读 · 0 评论 -
为什么负数的补码是取反加一
计算机中的负数用反码表示,那么问题来了:1、什么是反码?2、为什么要用反码表示负数?1、什么是反码?所谓反码就是数的二进制表示取反加一以Integer的【-1】为例(Integer占4个字节,占用(4*8=32)位,第一位为符号位):【-1】的正常二进制表示【1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1】【-1取反】的二进制表示【1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1原创 2020-07-03 13:27:29 · 2792 阅读 · 1 评论 -
Java线程池 - 问题驱动学习
使用线程池比手动创建线程好在哪里?线程池的各个参数的含义?线程池有哪 4 种拒绝策略?有哪 6 种常见的线程池?什么是 Java8 的 ForkJoinPool?线程池常用的阻塞队列有哪些?为什么不应该自动创建线程池?合适的线程数量是多少?CPU 核心数和线程数的关系?如何根据实际需要,定制自己的线程池?如何正确关闭线程池?shutdown 和 shutdownNow 的区别?线程池实现“线程复用”的原理?Q1:使用线程池比手动创建线程好在哪里?A1.1、复用线程以降低资源消耗降低创原创 2020-07-03 21:47:44 · 217 阅读 · 0 评论 -
从理解Future模式到仿写JUC的Future模式
1、多线程如何提升系统吞吐量我们看看下面的8个任务,白色部分为CPU执行、灰色部分为IO,假设每个任务执行200ms = CPU执行100ms + IO执行100ms1.1、串行执行在串行执行8个任务的情况下,系统的响应时间1600ms,吞吐量为0.5任务/100ms模拟程序如下public class SerialProcessor { public static void main(String[] args) { long startTime = System.cu原创 2020-07-02 13:34:20 · 241 阅读 · 0 评论 -
ThreadLocal 内存泄漏问题
本文说说ThreadLocal由于使用不当造成的内存泄漏问题Thead和ThreadLocal的内存状况如下图,不了解的同学参考: 图解ThreadLocal核心原理如果线程太多,每个线程的value值都很大,是不是会造成内存溢出,写个程序模拟一下OOM的场景1、程序模拟一下OOMpublic class ThreadLocalTest { public static void main(String[] args) throws InterruptedException { tes原创 2020-10-26 18:18:10 · 318 阅读 · 0 评论 -
图解ThreadLocal核心原理
线程安全问题的本质:对共享资源进行访问解决线程安全问题:加锁,互斥访问共享资源多线程编程时,如果不操作共享变量,就没有线程安全问题了原创 2020-10-26 11:53:22 · 492 阅读 · 1 评论 -
ConcurrentlinkedQueue
1、概述ConcurrentLinkedQueue(队列,线程安全的链表队列), 内部用单向链表实现,尾部入队、头部出队。2、内部数据结构(2.1)ConcurrentLinkedQueuepublic class ConcurrentLinkedQueue<E> extends AbstractQueue<E> implements Queue<E>, java.io.Serializable { private transien原创 2020-05-12 19:48:34 · 227 阅读 · 0 评论 -
CopyOnWriteArrayList
CopyOnWriteArrayList底层原理1、官方注释 & APIA thread-safe variant of java.util.ArrayList in which all mutative operations (add, set, and so on) are implemented by making a fresh copy of the underlying array.CopyOnWriteArrayList是Arraylist的线程安全版本, 所有的修改操作(ad原创 2020-05-12 15:24:40 · 274 阅读 · 0 评论