2020-10-24 线程学习

目录

前言

一、线程五大状态?

二、状态详解

1.线程创建

2.new——就绪状态

3.就绪状态——运行状态

3.阻塞状态

4.死亡状态

三、线程方法。

1.setPriority(int newPriority);更改线程的优先级。

2.sleep();在指定的毫秒数内让当前正在执行的线程休眠。

3.join();等待该线程终止。

4.yieId();暂停当前正在执行的线程对象,并执行其他线程。

5.isAlive();测试线程是否处于活动状态。

6.stop()、destory();(已经被废弃)停止线程。

三、线程状态。(Thread.State)

 



前言

学习线程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();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值