专注Java教育14年 全国咨询/投诉热线:444-1124-454
星辉LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 2023技术核心,线程安全面试题

2023技术核心,线程安全面试题

更新时间:2022-12-09 16:13:05 来源:星辉 浏览603次

Java软件开发的就业前景是被公认的不错选择,非常适合我们的选择与转行,然而大部分的同学从传统高校中毕业后,步入到社会中发现,并没有掌握到真正核心的技术,导致大家与开发的失之交臂,今天小编就针对一些面试官的问题,总结出的一些必考知识点,希望可以帮助到大家快速获得心仪的offer吧!

线程安全面试题

1.如何在Java中实现线程?

在语言层面有两种方式。java.lang.Thread 类的实例就是一个线程但是它需要调用java.lang.Runnable接口来执行,由于线程类本身就是调用的Runnable接口所以你可以继承 java.lang.Thread 类或者直接调用Runnable接口来重写run()方法实现线程。

2.什么是线程安全?Vector是一个线程安全类吗?

如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量 的值也和预期的是一样的,就是线程安全的。一个线程安全的计数器类的同一个实例对象在被多个线程使用的情况下也不会出现计算失误。很显然你可以将集合类分 成两组,线程安全和非线程安全的。Vector 是用同步方法来实现线程安全的, 而和它相似的ArrayList不是线程安全的。

3.Java中如何停止一个线程?

Java提供了很丰富的API但没有为停止线程提供API。JDK 1.0本来有一些像stop(), suspend() 和 resume()的控制方法但是由于潜在的死锁威胁因此在后续的JDK版本中他们被弃用了,之后Java API的设计者就没有提供一个兼容且线程安全的方法来停止一个线程。当run() 或者 call() 方法执行完的时候线程会自动结束,如果要手动结束一个线程,你可以用volatile 布尔变量来退出run()方法的循环或者是取消任务来中断线程。

4.有哪些方法可以让线程进入阻塞状态,然后又如何恢复线程到运行状态?

使线程进入阻塞状态的方法:

(1)调用sleep方法主动放弃所占用的处理器资源;

(2)调用了一个阻塞式的IO方法:如等待某个输入输出流的完成;

(3)线程试图得到一个锁,而该锁正在被其他线程调用;

(4)线程在等待某个通知(notify);

(5)调用suspend方法暂停了线程,暂停后的线程必须通过resume方法来恢复,容易造成死锁,一般不用;

恢复线程到运行状态:

(1)sleep方法的线程经过了指定的时间;

(2)阻塞式的IO方法已经返回;

(3)成功的获取到了试图得到的锁;

(4)线程正在等等某个通知时,其他线程发出了一个通知;

(5)调用了resume方法;

以上就是“2023技术核心,线程安全面试题”,你能回答上来吗?如果想要了解更多的Java面试题相关内容,可以关注星辉Java官网。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>