你真的了解ThreadLocal吗
说到ThreadLocal的时候,很多人都能说出它的作用,用于存储线程的数据副本,使不同线程具有不同的数据。再谈到它的实现原理时,听到最多的就是说ThreadLocal内部维护着一个Map,这个Map的Key就是当前的Thread对象。按照这个思路,想当然的就是从ThreadLocal获取值的时候呢,通过内部的map.get(thread)获取。事实上真是这样实现的吗,翻开ThreadLocal源[……]
说到ThreadLocal的时候,很多人都能说出它的作用,用于存储线程的数据副本,使不同线程具有不同的数据。再谈到它的实现原理时,听到最多的就是说ThreadLocal内部维护着一个Map,这个Map的Key就是当前的Thread对象。按照这个思路,想当然的就是从ThreadLocal获取值的时候呢,通过内部的map.get(thread)获取。事实上真是这样实现的吗,翻开ThreadLocal源[……]
1、通过top命令查看占用CPU过高的进程,信息如下:
shell> top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
30718 r[......]
初次认识AtomicLongFieldUpdater
这个类是在druid
源码中看到的,当时很陌生又很好奇,druid
中源码是这样的:
final static AtomicLongFieldUpdater<DruidAbstractDataSource> executeQueryCountUpdater = AtomicLongFieldUpdater.newUpdater(Drui[......]