21xrx.com
2024-12-23 02:59:02 Monday
登录
文章检索 我的文章 写文章
Java生命周期中的5种状态及状态转换
2023-06-17 04:36:02 深夜i     --     --
Java虚拟机 线程 状态转换

Java应用程序的生命周期可以分为5种状态,分别是新建、就绪、运行、阻塞和终止状态。这些状态之间的转换由Java虚拟机(JVM)负责控制。

1. 新建状态(New)

当一个Java应用程序被创建时,它处于新建状态。此时,JVM会为应用程序分配空间,并对应用程序中的静态变量进行初始化。

2. 就绪状态(Runnable)

当应用程序被启动后,它进入就绪状态。此时,应用程序中所有的线程都处于可运行状态,等待JVM分配CPU资源来执行它们。

3. 运行状态(Running)

当线程获得CPU资源后,它就进入运行状态。此时,线程会执行相关的代码逻辑。在运行状态中,线程可能会被阻塞,直到某些条件变为真。

4. 阻塞状态(Blocked)

当线程在运行状态中遇到某些条件时,它可能会进入阻塞状态。例如,线程可能会试图访问一个被另一个线程锁定的对象,或者线程可能会试图等待某个事件的发生。

5. 终止状态(Terminated)

当线程执行完其任务,或者出现了无法恢复的异常时,它就进入终止状态。在此状态下,线程会释放占用的资源,并通知其它线程。

下面是一个简单的Java程序,展示了线程在不同状态下的行为:


public class ThreadExample {

  public static void main(String[] args) {

    // 线程新建状态

    Thread thread = new Thread(() -> {

      // 线程就绪状态

      System.out.println("Thread is running");

      try {

        // 线程阻塞状态

        Thread.sleep(5000);

      } catch (InterruptedException e) {

        e.printStackTrace();

      }

      // 线程终止状态

      System.out.println("Thread is terminated");

    });

    thread.start();

  }

}

在上面的代码中,我们创建了一个新的线程,并将其设置为就绪状态。一旦线程获得CPU资源,它将进入运行状态,并打印一条消息。然后,线程将进入阻塞状态,等待5秒钟。最后,线程将进入终止状态,并打印另一条消息。

  
  

评论区

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