2020全新Java面试题——多线程(三)

2020全新Java面试题——多线程(三),第1张

2020全新Java面试题——多线程(三)

一、线程池都有哪些状态?

线程池有5种状态:Running、ShutDown、Stop、Tidying、Terminated。

线程池各个状态切换框架图:

(视频教程推荐:java视频)

二、线程池中 submit()和 execute()方法有什么区别?

接收的参数不一样

submit有返回值,而execute没有

submit方便Exception处理

三、在 java 程序中怎么保证多线程的运行安全?

线程安全在三个方面体现:

原子性:提供互斥访问,同一时刻只能有一个线程对数据进行 *** 作,(atomic,synchronized);

可见性:一个线程对主内存的修改可以及时地被其他线程看到,(synchronized,volatile);

有序性:一个线程观察其他线程中的指令执行顺序,由于指令重排序,该观察结果一般杂乱无序,(happens-before原则)。

(相关教程推荐:java入门程序)

四、多线程锁的升级原理是什么?

在Java中,锁共有4种状态,级别从低到高依次为:无状态锁,偏向锁,轻量级锁和重量级锁状态,这几个状态会随着竞争情况逐渐升级。锁可以升级但不能降级。

锁升级的图示过程:

五、什么是死锁?

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

推荐教程:java面试题

以上就是2020全新Java面试题——多线程(三)的详细内容,

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/686658.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-21
下一篇 2022-04-21

发表评论

登录后才能评论

评论列表(0条)

保存