TTL应用
1. TransmittableThreadLocal 怎么用?1.1 ThreadLocal使用子线程获取不到 父线程set到ThreadLocal所修饰变量的值; 123456789101112public class TtlTest { @Test public void Test001() { ThreadLocal<String&...
1. TransmittableThreadLocal 怎么用?1.1 ThreadLocal使用子线程获取不到 父线程set到ThreadLocal所修饰变量的值; 123456789101112public class TtlTest { @Test public void Test001() { ThreadLocal<String&...
1. 简介为构建锁和同步器提供基本的线程阻塞唤醒原语,LockSupport中的park()和unpark()的作用分别是阻塞线程和解除阻塞线程。类似于wait和notify,类似于await和signal。 2. 使用示例1234567891011121314151617181920212223242526272829303132333435363738394041424344454647...
Condition1. 使用Condition实现等待通知机制12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455public class ConTest { final Lock lock = new ReentrantLoc...
1. FeatureTaskFutureTask是Runnable, Future接口的实现类; 1234567891011121314151617181920212223242526{ FutureTask<String> futureTask = new FutureTask<String>( () -> { Syst...
如何中断一个线程?1. while循环判断interrupt标识1234567891011121314151617181920212223242526272829{ Thread t1 = new Thread(() -> { while (true) { if(Thread.currentThread().isI...
通过一些demo ,尝试理解juc包下的一些类的用法; 1. 使用ReentrantLock进行同步说明:开启四个线程,每个线程首先去执行lock方法后,睡眠不同的时间后,最后执行unlock方法。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525...
原子类1. LongAdder2. LongAccumulator123456789101112131415161718192021{ LongAdder longAdder = new LongAdder(); longAdder.increment(); longAdder.increment(); longAdder.increment(); S...
CAS1. ABA问题123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051{ static AtomicInteger atomicInteger = new AtomicInteger(100); static AtomicStampe...
1. 简介2. 源码分析继承关系属性方法内部类构造方法 3. 常见问题
1. 概念 什么是原子性? 在同一项事务的处理过程中,事务保证了对多个数据源的修改,要么同时成功,要么同时撤销。 什么是持久性? 事务保证所有成功被提交的数据的修改都能正确的被持久化,不丢失数据。 数据只有写入磁盘、磁带等持久化存储器后才会拥有持久性,只存储在内存中的数据,一旦遇到应用程序突然崩溃,或者数据库、操作系统一侧崩溃,甚至是机器突然宕机等情况数据就会丢失。 但现实最大的困难是...