栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java线程状态变换过程代码解析

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java线程状态变换过程代码解析

线程状态

  • NEW:刚创建未启动的线程
  • RUNNABLE:正在执行状态
  • BLOCKED:处于阻塞状态的线程
  • WAITING:正在等待另一个线程执行特定动作的线程
  • TIMED_WAITING:等待另一个线程执行时间到达指定时间
  • TERMINATED:线程退出执行
public class TestState {
  public static void main(String[] args) {
    Thread thread = new Thread(()->{
      for (int i = 0; i < 5; i++) {
 try {
   Thread.sleep(1000);
 } catch (InterruptedException e) {
   e.printStackTrace();
 }
      }
      System.out.println("/////");
    });

    //观察线程状态
    Thread.State state = thread.getState();
    System.out.println(state); //New状态

    thread.start();
    state = thread.getState();
    System.out.println(state);//Run状态

    while (state!=Thread.State.TERMINATED){
      try {
 Thread.sleep(100);
      } catch (InterruptedException e) {
 e.printStackTrace();
      }
      state = thread.getState();//更新线程状态
      System.out.println(state);//输出状态
    }
  }
}

线程礼让

  • 当前正在执行的线程暂停,但是不会阻塞
  • 当前线程失去处理机,编程就绪状态
  • 礼让是否成功取决于CPU,如果礼让成功,则等待下一次调度
public class TestYield {
  public static void main(String[] args) {
    MyYield myYield = new MyYield();

    new Thread(myYield,"a").start();
    new Thread(myYield,"b").start();
  }
}

class MyYield implements Runnable{
  @Override
  public void run() {
    System.out.println(Thread.currentThread().getName()+"线程开始执行");
    Thread.yield();
    System.out.println(Thread.currentThread().getName()+"线程停止执行");
  }
}

执行结果:

线程强制执行到结束

  • 使用join()方法
  • 使用join()方法的线程会强制执行直到结束,不会让出处理机
public class TestJoin implements Runnable{
  @Override
  public void run() {
    for (int i = 0; i < 1000; i++) {
      System.out.println("强制执行线程来了"+i);
    }
  }

  public static void main(String[] args) throws Exception{
    TestJoin testJoin = new TestJoin();
    Thread thread = new Thread(testJoin);
    thread.start();

    for (int i = 0; i < 500; i++) {
      if(i==200){
 thread.join();
      }
      System.out.println("主线程"+i);
    }
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/133896.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号