Thread面试题

2023-06-13,

面试题目录https://www.cnblogs.com/Kaelthas/p/15005844.html

1、一个Thread对象代表一个线程,同一个线程能否多次启动?

不能,在Thread类中变量threadStatus=0表示线程未启动,调用start()前会检测该变量是否为零,如果等于1返回 IllegalThreadStateException

2、run()  VS  start()  区别

run()方法需要在继承Thread类后重写,这是线程启动后要执行的逻辑代码

start()方法是线程启动方法

Thread utilThread = new UtilThread();
utilThread.start();//这里父类引用utilThread在执行start()方法后,会调用子类的run()方法。

3、说一下多线程实现方式

Thread实现方式一: 继承Thread类 重写子类的run方法,创建该子类的对象 启动线程 start()

Thread实现方式二: 定义实现Runnable接口的子类实现Runnable接口的run方法,创建该子类对象在创建Thread对象的时候,将创建好的Runnable子类对象作为初始化参数,传递给Thread对象启动Thread对象(启动线程)+++++这里方法二明显好于方法1,因为有多重实现,继承只能单继承,将线程解耦,多线程数据共享

线程池。。

···

4、线程的状态(生命周期)

新建:线程处于刚刚创建的状态

就绪:有执行资格,等待cpu调度获得执行权

运行:取得执行权,正在cpu上执行

阻塞:无执行资格,无执行权

死亡:线程正常或异常终止(run()方法执行完毕),线程对象成为垃圾,等待垃圾回收器回收

5、

Thread面试题的相关教程结束。

《Thread面试题.doc》

下载本文的Word格式文档,以方便收藏与打印。