并发编程
Thread.currentThread()方法来获取系统当前正在执行的一条线程,
多线程:怎么实现线程安全,各个实现方法有什么区别,volatile关键字的使用,可重入锁的理解,Synchronized是不是可重入锁?
https://www.cnblogs.com/baizhanshi/p/7211802.html
ReenTrantLock的字面意思就是再进入的锁,其实synchronized关键字所使用的锁也是可重入的,两者关于这个的区别不大。两者都是同一个线程没进入一次,锁的计数器都自增1,所以要等到锁的计数器下降为0时才能释放锁。
多线程了解多少啊?使用多线程会有什么问题?你是怎么理解“线程安全”的?
进程和线程的区别?
线程生命周期 线程状态
如何结束一个一直运行的线程?
Java内存模型 CAS 原子操作 volatile内存语义 功能
Java多线程方面问的比较多 重排序 结合多场景问是否发生重排序 线程池构建 线程复用?
类锁 对象锁 静态锁 结合多场景提问?
ContextClassLoader(线程上下文类加载器)的作用?
synchronized关键字来说一下,它的用途是什么?synchronized底层的原理是什么?
产生死锁的条件是什么?我们可以如何避免死锁?(可延伸到操作系统层面上的死锁)?
ThreadLocal你了解过吗?主要是用来干什么的?具体的源码实现原理来说一下吧
threadlocal使用场景及问题?
Volatile synchronized 实现同步的其他方式 ReenTrantLook等?
synchronized锁和ReentrantLock锁有什么区别呀?
https://blog.csdn.net/weixin_40792878/article/details/81369385
concurrenthashmap为何读不用加锁?
在jdk1.8中ConcurrentHashMap底层采用了Node+CAS+Synchronized来保证线程安全(1.7使用分段加锁实现)
get操作时无锁是由于Node元素的val和指针next是用volatile修饰的,在多线程情况下线程A修改节点或者新增节点都是对线程B可见的。
Node数组也使用volatile修饰主要是保证在数组扩容的时候保证可见性。