java线程的生命周期

要了解线程,首先要知道进程是什么。

进程

进程的概念: 进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。程序运行时,系统会就会创建一个进程,并为它分配资源,然后把这个进程放在进程就绪队列中,进程调度器选中它时,就会为它分配CPU时间,程序开始真正运行。

进程间的通信方式:

  1. 消息传递
  2. 共享存储
  3. 管道通信

线程

线程的概念: 线程时进程中的一个执行流程,一个进程可以有多个线程 (至少一个) 。一个进程可以启动多个线程。

线程的生命周期:
  • 新建状态: 此时新建对象不能运行,和其他Java对象一样,仅仅是由JVM分配了内存,没有表现出任何线程的动态特征。
  • 就绪状态: 当线程调用start()方法后,该线程进入就绪状态,此时线程进入可运行池中,等待CPU的资源。
  • 运行状态: 处于就绪状态的的线程获得CPU执行权后,开始执行run()方法中的线程执行体,则该线程处于运行状态。注意:只有在就绪状态的线程才可能进入运行状态。
  • 阻塞状态: 正处于运行状态的线程遇到某些特殊情况时,会放弃CPU执行权,进入阻塞状态。当引起特殊情况的原因被解除后,线程进入就绪状态,回到可运行池中,重新等待系统调度的CPU执行权。
  • 死亡状态: 当run()方法执行完毕,或者线程抛出一个未捕获的异常 或者 错误 的时候,线程就会进入死亡状态了,进入死亡状态的线程不再拥有运行的资格,也不能转换到其他状态。
    注意:如果在一个死去的线程上调用start()方法,会抛出java.lang.IllegalThreadStateException异常。

线程的生命周期图

线程和进程的关系

  • 一个进程可以有多个线程,至少有一个线程;
    而一个线程只能在一个进程的地址空间内活动。
  • 资源分配给进程,同一个进程的所有线程共享该进程的所有资源。
  • CPU分配资源给线程,即真正在处理器运行的是线程。
  • 线程在执行过程中需要协作同步,不同进程的线程间要利用消息通信的方法实现同步。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值