多线程编程(二)线程的生命周期

线程的生命周期

1. 分为5个阶段

在这里插入图片描述

1.1 新建

就是刚使用new方法,new出来的线程

1.2 就绪

就是调用的线程的start()方法后,这时候线程处于等待CPU分配资源阶段,谁先抢的CPU资源,谁开始执行,出于可运行状态,因为没有获取到cpu片段,还没有真正运行;

1.3 运行

当就绪的线程被调度并获得CPU资源时,便进入运行状态,run方法定义了线程的操作和功能;;

1.4 阻塞

在运行状态的时候,可能因为某些原因导致运行状态的线程变成了阻塞状态,比如sleep()、wait()之后线程就处于了阻塞状态,这个时候需要其他机制将处于阻塞状态的线程唤醒,比如调用notify或者notifyAll()方法。唤醒的线程不会立刻执行run方法,它们要再次等待CPU分配资源进入运行状态;

1.4 销毁

如果线程正常执行完毕后或线程被提前强制性的终止或出现异常导致结束,那么线程就要被销毁,释放资源;

2. 常用方法

2.1 getPriority

getPriority():获取当前线程的优先级

2.2 setPriority

setPriority():设置当前线程的优先级
>注意:线程优先级高,被CPU调度的概率大,但不代表一定会运行,还有小概率运行优先级低的线程。

2.3 isAlive

isAlive():判断线程是否处于活动状态 (线程调用start后,即处于活动状态)

扫描二维码关注公众号,回复: 12352194 查看本文章

2.4 join

join():调用join方法的线程强制执行,其他线程处于阻塞状态,等该线程执行完后,其他线程再执行。有可能被外界中断产生InterruptedException 中断异常。

2.5 sleep

sleep():在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)。休眠的线程进入阻塞状态。不会让出cpu

2.6 yield

yield():调用yield方法的线程,会礼让其他线程先运行。(大概率其他线程先运行,小概率自己还会运行)

2.7 wait

wait():导致线程等待,进入堵塞状态。该方法要在同步方法或者同步代码块中才使用的,让出cpu

2.8 notify

notify():唤醒当前线程,进入运行状态。该方法要在同步方法或者同步代码块中才使用的

2.8 notifyAll

notifyAll():唤醒所有等待的线程。该方法要在同步方法或者同步代码块中才使用的

猜你喜欢

转载自blog.csdn.net/jinian2016/article/details/109693397