AQS DEMO
通过一些demo ,尝试理解juc包下的一些类的用法; 1. 使用ReentrantLock进行同步说明:开启四个线程,每个线程首先去执行lock方法后,睡眠不同的时间后,最后执行unlock方法。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525...
通过一些demo ,尝试理解juc包下的一些类的用法; 1. 使用ReentrantLock进行同步说明:开启四个线程,每个线程首先去执行lock方法后,睡眠不同的时间后,最后执行unlock方法。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525...
CAS1. ABA问题123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051{ static AtomicInteger atomicInteger = new AtomicInteger(100); static AtomicStampe...
原子类1. LongAdder2. LongAccumulator123456789101112131415161718192021{ LongAdder longAdder = new LongAdder(); longAdder.increment(); longAdder.increment(); longAdder.increment(); S...
1. 简介2. 源码分析继承关系属性方法内部类构造方法 3. 常见问题
1. 概念 什么是原子性? 在同一项事务的处理过程中,事务保证了对多个数据源的修改,要么同时成功,要么同时撤销。 什么是持久性? 事务保证所有成功被提交的数据的修改都能正确的被持久化,不丢失数据。 数据只有写入磁盘、磁带等持久化存储器后才会拥有持久性,只存储在内存中的数据,一旦遇到应用程序突然崩溃,或者数据库、操作系统一侧崩溃,甚至是机器突然宕机等情况数据就会丢失。 但现实最大的困难是...
1. 概述 基于XA协议的2PC、3PC 基于业务层的TCC 应用消息队列+消息表 seata 2. 2PC基于 XA 协议实现的分布式事务,XA 协议中分为两部分:事务管理器和本地资源管理器。其中本地资源管理器往往由数据库实现,比如 Oracle、MYSQL 这些数据库都实现了 XA 接口,而事务管理器则作为一个全局的调度者。 两阶段提交(2PC),对业务侵⼊很小,它最⼤的优势就是对使⽤...
1. 实现多线程1.1 创建多线程的方式1.1.1 实现Runnable接口12345678public class RunnableThread implements Runnable { @Override public void run() { System.out.println('用实现Runnable接口实现线程'...
0. 简介: ThreadLocal 并不解决线程间共享数据的问题 ThreadLocal 通过隐式的在不同线程内创建独立实例副本避免了实例线程安全的问题;每个线程持有一个 Map 并维护了 ThreadLocal 对象与具体实例的映射,该 Map 由于只被持有它的线程访问,故不存在线程安全以及锁的问题 ThreadLocalMap 的 Entry 对 ThreadLocal 的引用为弱引...
1. CountDownLatchlatch 的中文意思是门栓、栅栏,CountDownLatch 基于 AQS 的共享模式的使用 1.1 使用例子 假设我们有 N ( N > 0 ) 个任务,那么我们会用 N 来初始化一个 CountDownLatch,然后将这个 latch 的引用传递到各个线程中,在每个线程完成了任务后,调用 latch.countDown() 代表完成了一个任务...
1. BlockingQueue由来在生产者-消费者模式中,为了使生产者消费者解藕,需要一个存放元素的容器,使生产者可以只关心往队列里添加元素下,消费者只关系从队列中取出元素进程处理。 而且这个队列必须要满足两点: 线程安全 缓冲池空了,我们需要阻塞消费者,唤醒生产者;当缓冲池满了,我们需要阻塞生产者,唤醒消费者 JDK 为此设计了 阻塞队列(BlockingQueue),并提供了几个基...