ThreadLocal是解决线程安全问题一个很好的思路,它通过为每个线程提供一个独立的变量副本解决了变量并发访问的冲突问题。 在Java 中,解决线程安全问题的手段有 3 种:1.使用线程安全的类,如 AtomicInteger 类;2.使用锁 synchronized 或 ReentrantLock 加锁排队执行;3.使用线程本地变量 ThreadLocal 来处理。 资料 Thread...
ThreadLocal是如何做到线程间的不共享数据的,ThreadLocalMap里面的key和value是什么。 线程池的核心参数。如果core为5,提交了三个任务,分别被三个线程执行了,其中一个任务提前执行完毕了,此时再提交一个任务,这个任务是如何执行的? Jetpack:LifeCycle如何实现的?LiveData,连续set两个相同的数据,会收到几次;连续post两...
ThreadLocal可以理解为线程本地变量,他会在每个线程都创建一个副本,那么在线程之间访问内部副本变量就行了,做到了线程之间互相隔离,相比于synchronized的做法是用空间来换时间。 ThreadLocal有一个静态内部类ThreadLocalMap,ThreadLocalMap又包含了一个Entry数组,Entry本身是一个弱引用,他的key是指向ThreadLocal的弱引用,E...
使用ThreadLocal可以提供比使用sychorinized更简单的一种线程安全机制。在session管理,数据库连接等场景中会有应用。 10.volatile关键字的作用 可以保证修改的可见性,同时避免指令重排序。 11.synchornized和Lock的区别 作用范围:使用syn可以给代码块,方法和变量加锁,而使用lock只可以给代码块加锁 使用方法:使用lock需...
那么事务的启动有哪些方式呢? 第一种:使用启动事务的语句,这种是显式的启动事务。比如 begin 或 start transaction 语句。与之配套的提交语句是 commit,回滚语句是 rollback。 第二种:autocommit 的值默认是 1,含义是事务的自动提交是开启的。如果我们执行 set autocommit=0,这个命令会将这个线程的自动提交关掉。意...
讲讲ThreadLocal的作用,是否线程安全? 进程间的通信 TreeMap讲解,里面有什么属性,entry里有什么属性? Java里有哪些是不需要加锁的同步方法? 行锁和表锁的区别、场景 组合索引的使用,eg. (a, b, c)索引,where a=x;where b=x;where a=x and b=x;哪个能使用索引?
synchronized 了解偏向锁、轻量级锁、重量级锁的概念以及升级机制、以及和 ReentrantLock 的区别 CAS 了解AtomicInteger 实现原理、CAS 适用场景、如何实现乐观锁 AQS 了解AQS 内部实现、及依靠 AQS 的同步类比如 ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier 等的实现 ThreadLocal 了解ThreadLocal 使用场景和内部实现...
17.ConcurrentHashMap 底层具体实现知道吗?实现原理是什么? 18.能谈一下CAS机制吗? 19.死锁的发生原因和怎么避免 20.volatile关键字有什么用?它的实现原理是什么? 21.讲一下wait和notify这个为什么要在synchronized代码块中? 22.ThreadLocal是什么?它的实现原理呢?
这里地方有一个注意的地方就是计数器使用了线程的ThreadLocal 因为本身消息的生产就可以多线程进行,所以当然要基于线程的上下文来计数递增。 选择队列策略增强版(故障延迟机制) 默认的投递方式比较简单,但是也暴露了一个问题,就是有些Queue队列可能由于自身数量积压等原因,可能在投递的过程比较长,对于这样的Queue队列会...