0
点赞
收藏
分享

微信扫一扫

数据治理:数据质量评价体系

梦为马 2023-06-09 阅读 119
java

Java程序中的线程有以下几种状态:

1.New(新建状态)

当线程对象被创建但未启动时,线程处于新建状态。此时线程并没有真正的创建,只是为线程分配了必要的资源,并初始化了其内部属性。

2.Runnable(就绪状态)

当线程对象调用start()方法后,线程就进入了可运行状态。此时线程已经准备好运行,但是需要等待系统调度,以便分配处理器资源。

3.Running(运行状态):

当CPU资源分配给线程时,线程进入运行状态。此时,线程才真正开始执行run()方法中的代码。

4.Blocked(阻塞状态)

线程在运行过程中,如果被其它线程或者同步锁阻塞,就会进入阻塞状态。当条件满足时,阻塞状态的线程会转换为可运行状态。

5.Waiting(等待状态)

线程在执行wait()、join()等方法,或者调用LockSupport.park()方法时,会进入等待状态。只有当另一个线程执行notify()、notifyAll()或者interrupt()方法时,线程才会被唤醒。

6.Timed Waiting(计时等待状态)

线程在执行sleep()、wait(long)、join(long)等方法时,会进入计时等待状态。只有当指定的时间到了,或者另一个线程执行notify()、notifyAll()方法时,线程才会被唤醒。

7.Terminated(终止状态)

线程会以以下三种方式之一结束,结束后就处于死亡状态:

  • run()方法执行完成,线程正常结束
  • 线程抛出一个未捕获的Exception或Error
  • 直接调用该线程的stop()方法来结束该线程

下面是一个Java线程生命周期的示例代码:

public class ThreadLifeCycleExample implements Runnable {
    public void run() {
        System.out.println("线程开始执行");
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("线程执行完毕");
    }

    public static void main(String[] args) {
        Thread thread = new Thread(new ThreadLifeCycleExample());
        System.out.println("线程状态:" + thread.getState()); // 新建状态
        thread.start();
        System.out.println("线程状态:" + thread.getState()); // 就绪状态
        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("线程状态:" + thread.getState()); // 运行状态
        try {
            Thread.sleep(1500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("线程状态:" + thread.getState()); // 终止状态
    }
}
举报

相关推荐

0 条评论