线程生命周期

创建线程的两种方法

1.继承Thread类
2.实现Runnable接口

线程从创建到消亡分为新建、就绪、运行、阻塞、死亡5种状态。
在这里插入图片描述

新建状态

创建一个线程就处于新建状态。此时线程对象已经被分配了内存空间,并且私有数据也被初始化,但是该线程还不能运行。

就绪状态

在处于新建状态的线程中调用start()方法可以将线程状态转换成就绪状态,即启动线程。此时,线程已经得到除cpu时间之外的其他系统资源,只等待JVM的线程调度器按照线程的优先级对该线程进行调度,从而使该线程拥有获得cpu时间片的机会。

运行状态

运行状态表示线程被调度并且获得了CPU的控制权。此时会自动调用该线程对象的run()方法,并且这个线程会一直运行到结束,除非该线程主动放弃CPU的控制权或者CPU控制权被优先级更高的线程抢占。处于运行状态的线程就会让出CPU控制权。

阻塞状态

一个正在执行的线程在某些特殊情况下,可能会被人挂起,让出CPU。暂时中止执行,进入阻塞状态。例如,调用sleep()、wait()等方法,线程都将进入阻塞状态。线程阻塞时不能进入就绪队列,只有在某些事件唤醒线程后,线程才能重新进入就绪队列而处于就绪状态。

死亡状态

正常情况下,run()方法返回会使得线程终止,调用stop()方法或destory()方法也能终止线程,但不推荐使用这两个方法,因为stop()方法会使程序产生异常,而destory()方法强制终止线程,不释放内存,会造成内存泄漏。

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值