当前位置: 首页 > 面试题库 >

Java:请谈谈 ThreadLocal 是怎么解决并发安全的?

黄昊英
2023-04-24

在java程序中,常用的有两种机制来解决多线程并发问题,一种是sychronized方式,通过锁机制,一个线程执行时,让另一个线程等待,是以时间换空间的方式来让多线程串行执行。而另外一种方式就是ThreadLocal方式,通过创建线程局部变量,以空间换时间的方式来让多线程并行执行。两种方式各有优劣,适用于不同的场景,要根据不同的业务场景来进行选择。

在spring的源码中,就使用了ThreadLocal来管理连接,在很多开源项目中,都经常使用ThreadLocal来控制多线程并发问题,因为它足够的简单,我们不需要关心是否有线程安全问题,因为变量是每个线程所特有的。

 类似资料:
  • 本文向大家介绍请你谈谈,你是怎么准备这次面试的?相关面试题,主要包含被问及请你谈谈,你是怎么准备这次面试的?时的应答技巧和注意事项,需要的朋友参考一下

  • 主要内容:1.测试准备,2.注解过程1.测试准备 Cat.java Person.java 通过set加上@Autowred注解注入 MainConfig.java 函数入口 2.注解过程 简单的来说就是通过配置类的refresh加载容器, 然后创建出单例bean, 然后通过后置处理器的时候加载@Autowried注解, 完成解析和注入。 refresh() -> getBean -> doGetBean -> getSinglet

  • ThreadLocal 变量解决了多线程环境下单个线程中变量的共享问题,使用名为ThreadLocalMap的哈希表进行维护(key为ThreadLocal变量名,value为ThreadLocal变量的值); 使用时需要注意以下几点: 线程之间的threadLocal变量是互不影响的, 使用private final static进行修饰,防止多实例时内存的泄露问题 线程池环境下使用后将thre

  • ReadWriteLock包括两种子锁 (1)ReadWriteLock ReadWriteLock 可以实现多个读锁同时进行,但是读与写和写于写互斥,只能有一个写锁线程在进行。 (2)StampedLock StampedLock是Jdk在1.8提供的一种读写锁,相比较ReentrantReadWriteLock性能更好,因为ReentrantReadWriteLock在读写之间是互斥的,使用的

  • 本文向大家介绍请谈谈你对JVM的理解?相关面试题,主要包含被问及请谈谈你对JVM的理解?时的应答技巧和注意事项,需要的朋友参考一下 Java虚拟机(JVM)是运行 Java 字节码的虚拟机。JVM有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。 什么是字节码?采用字节码的好处是什么? 在 Java 中,JVM可以理解的代码就叫做(

  • 本文向大家介绍请谈一谈,系统如何提高并发性?相关面试题,主要包含被问及请谈一谈,系统如何提高并发性?时的应答技巧和注意事项,需要的朋友参考一下 考察:操作系统综合性 1、提高CPU并发计算能力 (1)多进程&多线程 (2)减少进程切换,使用线程,考虑进程绑定CPU (3)减少使用不必要的锁,考虑无锁编程 (4)考虑进程优先级 (5)关注系统负载 2、改进I/O模型 (1)DMA技术 (2)异步I/