Java线程的生命周期

32 篇文章 0 订阅

Java多线程编程

Java给多线程提供了内置的支持。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发存在多个线程,每条线程并行执行不同的任务。多线程是多任务的一种特别形式。

进程:一个进程包括有操作系统分配的内存空间,包含至少一个线程。一个线程不可能单独的存在,它必须是进程的一部分。一个进程会一直不断的进行,直到所有的非守护线程全部执行完毕之后,再能结束进程。

线程是一个动态执行的过程,它存在一个声明周期,从产生到死亡,历经以下几个阶段:

下面我们详细的看一下每个状态:

新建状态

使用new关键字和Thread类或者其子类建立一个线程对象后,该线程对象就处于新建状态了。它保持这种状态知道程序执行这个线程。

就绪状态

当线程调用了start()方法后,该线程就进入了就绪状态,就绪状态的线程处于就绪队列中,要等待JVM中的线程调度器调度。

运行状态:如果处于就绪状态的线程获取CPU资源,就可以执行RUN方法,此时线程就处于运行状态,处于运行状态的线程最为复杂,它可以变为阻塞状态,就绪状态和死亡状态。

阻塞状态

阻塞状态相对来说也是 比较复杂的一种状态:如果一个线程执行了sleep(睡眠),suspend(挂起)等方法,失去所占的资源之后,该线程就从运行状态转为阻塞状态,在睡眠时间结束或者重新获得设备资源之后,该线程又重新进入就绪状态。阻塞状态可以细分为一下三种:

1、等待阻塞:运行状态中的线程执行wait()方法,使线程进入等待阻塞的状态;

2、同步阻塞:线程在获得synchronized同步锁失败(因为同步锁被其他进程占用);

3、其他阻塞:通过调用进程的sleep()或join()发出I/O请求时,线程就会进入阻塞状态。当sleep()状态超时时,join()等待线程终止或超时,或者I/O请求处理完毕,线程重新转入就绪状态。

死亡状态

一个运行状态的线程完成任务或者其他终止条件发生时,该线程就切换到终止状态。

线程的优先级

每一个线程都有一个优先级,这样可以方便操作系统确定线程的调度顺序。

Java线程的优先级是一个整数,其范围是1-10;在默认的情况下,每一个线程会分配一个优先级NORM_PRIORITY(5)。

具有较高优先级的线程对于程序来说更加重要,并且应该在低优先级的线程之前分配设备资源。但是,线程的优先级并不能保证线程的执行顺序,而且非常依赖于平台。

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值