线程的创建、启动、生命周期和调度

本文介绍Java中线程的创建、启动及生命周期状态转换,包括创建、就绪、运行、阻塞和死亡五个阶段,并讲解如何通过setPriority()、sleep()等方法进行线程调度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线程的创建、启动、生命周期和调度

      线程是指正在执行的一个指令序列。线程是处理器调度的基本单位,但不是资源分配单位。

      线程对象是指可以产生线程的对象。

      创建线程:要使用线程,首先需要创建线程。在java语言中,创建线程有两种方式,可以继承java.lang.Thread类或者实现Runnable接口。

      启动线程:线程创建完成后,通过线程的启动来执行线程。类Thread定义了start()方法用来完成线程的启动。

      1.线程的创建:在线程类使用new关键字实例化之后且在调用start()方法之前,线程处于创建状态。处于创建状态的线程仅仅分配了内存空间,属于生命周期的初始状态。

      2.就绪:在线程调用了start()方法后即处于就绪状态。处于就绪状态的线程具备了出CPU之外运行所需的所有资源。就绪状态线程排队等待CPU,由系统调度为其分配。

      3.运行:处于就绪状态的线程获得CPU之后处于运行状态。处于运行状态的线程才开始真正执行线程run()方法的内容。

      4.阻塞:处于运行状态的线程如果因为某种原因不能继续执行,则进入阻塞状态。阻塞状态与就绪状态的不同是:就绪状态只是因为缺少CPU而不能执行,而阻塞状态是由于各种原因引起线程不能执行,不仅仅是缺少CPU。引起阻塞的原因解除以后,线程再次转为就绪状态,等待分配CPU运行。

      5.死亡:当线程执行完run()方法的内容或被强制终止时,线程处于死亡状态,线程的整个生命周期结束。

      线程在整个生命周期中始终处于某种状态,从一种状态到另外一种状态的转换由线程调度方法实现。

      处于生命周期中的线程,通过调度实现各种状态间的转换。线程的调度是使用各种调度方法,如:

      setPriority()    设置优先级   线程的优先级是指线程被系统调度执行时的优先执行级别。 

      sleep()   线程休眠

      yield()    线程让步

      join()  线程等待

      在java语言中使用synchronized关键字实现线程同步

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值