21xrx.com
2025-03-23 21:33:55 Sunday
文章检索 我的文章 写文章
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。

  
  

评论区