21xrx.com
2024-11-08 22:26:36 Friday
登录
文章检索 我的文章 写文章
Java中的线程状态及转化
2023-06-15 16:56:06 深夜i     --     --
Java线程 线程状态 线程安全

Java中的线程是一种并发的执行方式,不同的线程之间可以并行执行,如果线程的数量过多或者执行时间过长,可能会造成线程安全的问题。在Java中,线程的状态是通过Thread类中的状态码来表示的,包括:

- NEW:创建新线程,但还没有开始执行。

- RUNNABLE:线程正在运行或准备运行。

- BLOCKED:线程因为某种原因被阻塞,无法继续执行。

- WAITING:线程处于等待状态,直到其他线程通知。

- TIMED_WAITING:线程等待一定的时间,直到超时或其他线程通知。

- TERMINATED:线程执行完毕,已经结束。

示例代码:


public class ThreadStateDemo {

  public static void main(String[] args) throws InterruptedException {

    Thread t1 = new Thread(() -> {

      System.out.println("线程开始执行。。。");

      try {

        Thread.sleep(5000);

      } catch (InterruptedException e) {

        e.printStackTrace();

      }

    });

    System.out.println("t1的状态:" + t1.getState()); // NEW

    t1.start();

    System.out.println("t1的状态:" + t1.getState()); // RUNNABLE

    Thread.sleep(1000);

    System.out.println("t1的状态:" + t1.getState()); // TIMED_WAITING

    Thread.sleep(5000);

    System.out.println("t1的状态:" + t1.getState()); // TERMINATED

  }

}

在上面的代码中,我们创建了一个新线程t1,但是t1并没有开始执行,所以它的状态为NEW。接着我们调用t1的start方法启动线程,线程开始执行,此时线程的状态为RUNNABLE。然后我们让主线程等待1秒钟,t1线程进入了睡眠状态,此时它的状态为TIMED_WAITING。最后t1线程执行完毕,线程状态变成了TERMINATED。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复