Java面试手册V2.0+突击V3.0知识点整理(十四) 附封面图片

在这里插入图片描述


1. Thread类中的start()和run()方法有什么区别?
  1. start()方法来启动线程,真正实现了多线程运行。这时无需等待run方法体代码执行完毕,可以直接继续执行下面的代码;通过调用Thread类的start()方法来启动一个线程,这时此线程是处于就绪状态,并没有运行。然后通过此Thread类调用方法run()来完成其运行操作的,这里方法run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程中止。然后CPU再调度其他线程。
  2. run()方法当作普通方法的方式调用。程序还是要顺序执行,要等待run方法体执行完毕后,才可继续执行下面的代码;程序中只有主线程这一个线程,其程序执行路径还是只有一条,这样就没有达到写线程的目的

2. 线程NEW状态
  • new创建一个Thread对象时,并没处于执行状态,因为没有调用start方法启动该线程,那么此时的状态就是新建状态

3. 线程RUNNABLE状态
  • 线程对象通过start方法进入runnable状态,启动的线程不一定会立即得到执行,线程的运行与否要看cpu的调度,我们把这个中间状态叫可执行状态(RUNNABLE)

4. 线程的RUNNING状态
  • 一旦cpu通过轮询或其他方式从任务中可以执行队列中选中了线程,此时它才能真正的执行自己的逻辑代码

5. 线程的BLOCKED
  • 线程正在等待获取锁
    • 进入BLOCKED状态,比如调用了sleep或者wait方法
    • 进行某个阻塞的io操作,比如因网络数据的读写进入BLOCKED状态
    • 获取某个锁资,从而加入到该锁的阻塞队列中而进入BLOCKED状态

6. 线程的TERMINATED状态
  • TERMINATED是一个线程的最终状态,在该状态下线程不会再切换到其它任何状态了,代表整个生命周期都结束了
  • 以下几种情况会进入TERMINATED状态:
    • 线程运行正常结束,结束生命周期
    • 线程运行出错意外结束
    • JVM Crash导致所有的线程都结束

7. 线程状态转化图

在这里插入图片描述


8. 如何知道代码段被哪个线程调用?
	System.out.println(Thread.currentThread().getName());

9. 线程活动状态?
	public class xkThread extends Thread{
		@Override
		public void run(){
			System.out.println("run run run is "+ this.isAlive());
		}
	
		public static void main(String[] args){
			xkThread xk = new xkThread();
			System.out.println("begin---"+xk.isAlive());
			xk.start();
			System.out.println("end---"+xk.isAlive());
		}
	}

10. sleep()方法
  • 方法sleep()的作用是在指定的毫秒数内让当前的“正在执行的线程”休眠(暂停执行)
  • jdk1.5之后,引入了一个枚举TimeUnit,对sleep()方法提供了很好的封装,如要表达2小时22分55秒899毫秒
	Thread.sleep(857899L);
	TimeUnit.HOURS.sleep(3);
	TimeUnit.MINUTES.sleep(22);
	TimeUnit.SECONDS.sleep(55);
	TimeUnit.MILLISECONDS.sleep(899);

上一篇:Java面试手册V2.0+突击V3.0知识点整理(十三) 附封面图片😍
下一篇:Java面试手册V2.0+突击V3.0知识点整理(十五) 附封面图片😍


如果觉得封面图片还行,请顺手点个赞😍

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SimpleZihao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值