目录
1.setPriority(int newPriority);更改线程的优先级。
2.sleep();在指定的毫秒数内让当前正在执行的线程休眠。
4.yieId();暂停当前正在执行的线程对象,并执行其他线程。
6.stop()、destory();(已经被废弃)停止线程。
前言
学习线程5大状态
一、线程五大状态?
创建——就绪状态——运行状态——阻塞状态——销毁
二、状态详解
1.线程创建
Thread t=new Thread()线程对象一旦创建就进入了新生状态。
2.new——就绪状态
当调用start()方法,线程立即进入就绪状态,但不意味着立即调度执行。
3.就绪状态——运行状态
进入运行状态,线程才真正的执行线程的代码块。
3.阻塞状态
当调用sleep,wait或同步锁定时,线程进入阻塞状态,就是代码不往下执行,阻塞事件解除后,重新进入就绪状态,等待cpu调度。
4.死亡状态
线程中断或结束,一旦进入死亡状态,就不能再次启动。
三、线程方法。
1.setPriority(int newPriority);更改线程的优先级。
Thread.Min_PRIORITY =1;
Thread.Max_PRIORITY =10;
Thread.NORM_PRIORITY =5;
使用以下方式改变或获取优先级:
getPriority() .setPriority(int xxx)
2.sleep();在指定的毫秒数内让当前正在执行的线程休眠。
- sleep指定当前线程阻塞的毫秒数。(1000)=1s
- sleep存在异常interruptedException;需要try-catch
- sleep时间达到后进入就绪状态。
- sleep可以模拟网络延时,倒计时等。
- 每一个对象都有一个锁,sleep不会释放锁。
3.join();等待该线程终止。
可以想象成插队,
待该线程执行完成后,其他线程才能执行。
4.yieId();暂停当前正在执行的线程对象,并执行其他线程。
假如存在a,b线程,a线程使用yield(),使得a线程进入就绪状态,但不一定b线程就能执行,得看cpu调度,这个方法只是让a,b线程重新竞争。
5.isAlive();测试线程是否处于活动状态。
6.stop()、destory();(已经被废弃)停止线程。
停止线程正确使用方法:使用一个标志位进行终止变量,
当flag=false,则终止线程执行。
class Testshop implements Runnable{
//1.建立一个标识符
private boolean flag=true;
@Override
public void run() {
while (true){
System.out.println("线程执行中。。。。。。");
}
}
//2.实现一个stop方法
public void stop(){
this.flag=false;
}
}
三、线程状态。(Thread.State)
NEW
至今尚未启动的线程处于这种状态。RUNNABLE
正在 Java 虚拟机中执行的线程处于这种状态。BLOCKED
受阻塞并等待某个监视器锁的线程处于这种状态。WAITING
无限期地等待另一个线程来执行某一特定操作的线程处于这种状态。TIMED_WAITING
等待另一个线程来执行取决于指定等待时间的操作的线程处于这种状态。TERMINATED
已退出的线程处于这种状态。
观察状态:
Thread thread=new Thread();
Thread.State state=thread.getState();