很多人都说要慎用ThreadLocal,谈谈你的理解?
使用时需要注意以下几点:- 线程之间的threadLocal变量是互不影响的 - 使用private final static进行修饰,防止多实例时内存的泄露问题 - 线程池环境下使用后将threadLocal变量remove掉或设置成一个初始值
请谈谈 ThreadLocal 是怎么解决并发安全的?
而另外一种方式就是ThreadLocal方式,通过创建线程局部变量,以空间换时间的方式来让多线程并行执行。
synchronized和ReentrantLock的异同点
synchronized隐式地获得、释放锁,ReentrantLock显式地获得、释放锁。等待可中断,即持有锁的线程长期不释放的时候,正在等待的线程可以选择放弃等待。ReentrantLock可以通过Condition类绑定多个条件,实现分组唤醒需要唤醒的线程们。
请谈谈volatile有什么特点,为什么它能保证变量对所有线程的可见性?
主内存和工作内存之间的交互分为8个原子操作: - lock - unlock - read - load - assign - use - store - write - volatile修饰的变量,只有对volatile进行assign操作,才可以load,只有lo...
Java如何实现多线程之间的通讯和协作?
同样地,当队列空时,消费者也必须等待,等待生产者通知它队列中有商品了。