首页 / 面试 / Java面试特殊知识点总结 part1
Java面试特殊知识点总结 part1
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java面试特殊知识点总结 part1,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2088字,纯文字阅读大概需要3分钟。
内容图文
![Java面试特殊知识点总结 part1](/upload/InfoBanner/zyjiaocheng/608/ac4bba99881d43bb969d32c2447c19c6.jpg)
并发与多线程
main方法里没有创建新的线程,执行main方法一共需要几个线程?
可以使用ManagementFactory
的getThreadMXBean
方法获取ThreadMXBean
信息,进而获取线程信息进行查看。代码:
package Exercise;
import java.lang.management.ManagementFactory;
import java.lang.management.ThreadInfo;
import java.lang.management.ThreadMXBean;
public class Test {
public static void main(String[] args) {
ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
ThreadInfo[] threadInfos = threadMXBean.dumpAllThreads(false, false);
for (ThreadInfo threadInfo : threadInfos) {
System.out.println(threadInfo.getThreadId() + ":" + threadInfo.getThreadName());
}
}
}
运行结果:
6:Monitor Ctrl-Break
5:Attach Listener
4:Signal Dispatcher
3:Finalizer
2:Reference Handler
1:main
答案是6个,通过每个线程的名字可以知道他们的作用。
ThreadLocal
ThreadLocal为每个线程创建一个变量的副本,对彼此不可见,它基于ThreadLocalMap实现。
核心机制如下:
- 每个Thread线程内部都有一个
map
(ThreadLocalMap)。 - map里面存储线程本地对象
key
和线程变量副本value
。 - Thread内部的
map
是由ThreadLocal
维护的,由ThreadLocal
负责向map
获取和设置线程的变量值。
每个线程只能获取自己的副本值,不能获取其他线程的,这样就形成了隔离,互不干扰。
ThreadLocal类提供了以下几个核心方法:
1.get()
方法:获取当前线程的副本变量值。
2.set()
方法:设置当前线程的副本变量值。
3.remove()
方法:移除当前线程的副本变量值。
4.initilaValue()
方法:初始化当前线程的副本变量值,初始化null。
ThreadLocalMap
是ThreadLocal
内部的一个map实现,
它和HashMap实现自Map接口不一样,它没有实现任何接口,仅供ThreadLocal内部使用,数据结构采用数组加开放地址法,Entry继承自WeakReference,是基于ThreadLocal场景下实现的特殊Map,源码见参考文献。
ThreadLocal的应用场景:
- 在对象进行跨层传递的时候,使用ThreadLocal可以避免多次传递,打破层次间的约束。
- 线程间数据隔离。
- 进行事务操作,用于存储事务信息。
- ·数据库连接,Session绘画管理。
发生了死锁,如何排查
使用jps
获取发生死锁的进程号。
使用jstack
+进程号查看该进程堆栈,它会详细显示死锁数量,相关联的进程,发生死锁的大致代码位置等信息。
jconsole
也可以查看相关信息。
参考文献
深入源码理解ThreadLocal和ThreadLocalMap
面试官:知道ThreadLocal嘛?谈谈你对它的理解?(基于jdk1.8)
内容总结
以上是互联网集市为您收集整理的Java面试特殊知识点总结 part1全部内容,希望文章能够帮你解决Java面试特殊知识点总结 part1所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。