并发
文章平均质量分 92
Davids_
原来人生无常,心安便是归处。
展开
-
Davids原理探究:Java并发包中的线程同步器(CountDownLatch、CyclicBarrier和Semaphore)
文章目录Java并发包中的线程同步器(CountDownLatch、CyclicBarrier和Semaphore)CountDownLatch核心方法1:countDown核心方法2:await核心方法3:getCountCyclicBarrier核心方法1:await核心方法2:resetSemaphore核心方法1:construction核心方法2:acquire核心方法3:acquireUninterruptibly核心方法4:release总结Java并发包中的线程同步器(CountDownL原创 2020-08-13 09:21:38 · 212 阅读 · 0 评论 -
Davids原理探究:Java抽象同步队列AQS原理
Java抽象同步队列AQS原创 2020-07-04 11:00:31 · 151 阅读 · 0 评论 -
Davids原理探究:Java并发包中锁的原理(ReentrantLock、ReentrantReadWriteLock)
文章目录Java并发包中锁的原理(ReentrantLock、ReentrantReadWriteLock)ReentrantLock公平锁ReentrantLock非公平锁abstract class AbstractQueuedSynchronizer - hasQueuedPredecessors实现ReentrantLock抽象类syncCopyOnWriteArrayList内部由ReentrantLock加锁实现线程安全Java并发包中锁的原理(ReentrantLock、ReentrantR原创 2020-07-02 19:30:02 · 281 阅读 · 0 评论 -
Davids原理探究:MySQL-InnoDB-MVCC 多版本控制
文章目录MySQL-InnoDB-MVCC 多版本控制概述特性事务快照的创建过程:undo logInnoDB行数据隐藏字段当前读/快照读MySQL-InnoDB-MVCC 多版本控制概述指的是一种提高并发的技术。最早的数据库系统,只有读读之间可以并发,读写,写读,写写都要阻塞。引入多版本之后,只有写写之间相互阻塞,其他三种操作都可以并行,这样大幅度提高了InnoDB的并发度。在内部实现中,与Postgres在数据行上实现多版本不同,InnoDB是在undolog中实现的,通过undolog可以找回数原创 2020-06-17 16:27:44 · 3474 阅读 · 0 评论 -
Davids原理探究:Java中List浅拷贝深拷贝问题
Java中List浅拷贝深拷贝问题浅拷贝基本数据类型的成员变量,进行值传递(将该属性值复制一份给新的对象)。引用数据类型的成员变量,比如说成员变量是某个数组、某个类的对象等进行引用传递(将该成员变量的引用值(内存地址)复制一份给新的对象)。深拷贝基本数据类型的成员变量,进行值传递(将该属性值复制一份给新的对象)。引用数据类型的成员变量,比如说成员变量是某个数组、某个类的对象等,会重新分配内存并将成员变量拷贝一份赋值给新对象(将该成员变量的内容复制一份到新开辟的内存上,新的对象指向新的内存地原创 2020-06-05 10:55:50 · 3327 阅读 · 0 评论 -
Davids原理探究:ThreadPoolExecutor原理
ThreadPoolExecutor原理探究线程池状态及转换条件如果当前线程!RUNNING状态,则从队列中删除任务,并执行拒绝策略,如果队列满,则新增线程,新增失败则执行拒绝策略。executeaddWorkerCASaddWorkers状态设置为-1避免在runWorker之前被中断,shutDownNow中断状态>=0的线程。// TODO 线程池状态已经切换状态的方法图XmindshutDown和shutDownNowpublic void shutdown()原创 2020-06-06 17:24:40 · 4214 阅读 · 0 评论 -
Davids原理探究:ScheduledThreadPoolExecutor原理
ScheduledThreadPoolExecutor原理探究内部变量periodperiod == 0,则为一次性任务。period < 0,则为fixed-delay,固定延时的定时可重复执行任务。period > 0,则为fixed-rate,固定频率的定时可重复执行任务。一次性任务public ScheduledFuture<?> schedule(Runnable command,原创 2020-05-30 19:07:16 · 3652 阅读 · 0 评论 -
Davids原理探究:Java并发包中并发队列(ConcurrentLinkedQueue、LinkedBlockingQueue、DelayQueue...)
Java并发包中并发队列的原理剖析ConcurrentLinkedQueue无界队列无锁算法,入队和出队使用CAS算法进行设置队首和队尾元素由于是无锁算法,所以在获取size的时候是进行遍历操作的,在遍历过程中,已经遍历过的节点可能有增删,所以size在高并发场景下存在一定误差,而且size性能较差,所以如果只是判断队列是否有元素建议使用isEmpty(),该方法只会获取first节点是否有元素。初始化队列时头尾节点均指向哨兵节点head = tail = new Node(null);p原创 2020-05-29 00:18:58 · 4221 阅读 · 0 评论