您好,登录后才能下订单哦!
密码登录
            
            
            
            
        登录注册
            
            
            
        点击 登录注册 即表示同意《亿速云用户服务条款》
        小编这次要用代码解析Java线程状态变换过程,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。
线程状态
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);//输出状态
    }
  }
}线程礼让
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()+"线程停止执行");
  }
}执行结果:

线程强制执行到结束
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);
    }
  }
}看完这篇关于用代码解析Java线程状态变换过程的文章,如果觉得文章内容写得不错的话,可以把它分享出去给更多人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。