分享

java学习——111.线程的状态

 pythonjava学习 2021-04-06

线程是从创建到执行完毕,总共有6个状态,

1. New(新建态)

  当用new操作符创建一个新线程时,如 new Thread(r), 该线程还没有开始运行。这意味着它的状态是new。

2. Runnable(运行态)

 一旦线程调用start()方法,线程就处于runnable状态。

3. Blocked(阻塞态)

受阻塞并等待某个监视器锁的线程处于这种状态。

4. Waiting(等待态)

无限期地等待另一个线程来执行。某一特定操作的线程处于这种状态

5.Timed Waiting(计时等待态)

当线程处于被阻塞或等待状态时,它暂时不活动。它不运行任何代码且消耗最少的资源。直到线程调度器重新激活它。细节取决于它是怎样达到非活动状态的。

6. Terminated(终止态)

   线程因如下两个原因之一而被终止:

   1) 因为run方法正常退出而自然死亡

   2) 因为一个没有捕获的异常终止了run方法意外死亡

各状态是可以转换的,借用网络上一图说明各状态的转换:

简单示例:

本例说明了三个状态:新建后为NEW状态,start()后为RUNNABLE状态,线程执行结束后为TERMINATED态。

其完整代码如下:

本例仅简单演示这三个状态,简单起见,我让run()方法的方法体为空。

public class ThreadLearn implements Runnable{

    public void run() { }

    public static void main(String args[]) {

       ThreadLearn target1=new ThreadLearn();//创建类的一个对象

       Thread thread=new Thread(target1,"lay");//创建线程类的对象,target1为线程的目标对象,线程名为奇数

       System.out.println("new "+thread.getName()+"线程的状态是:"+thread.getState());

       thread.start();//启动线程

       System.out.println("start "+thread.getName()+"线程的状态是:"+thread.getState());

      System.out.println("start "+thread.getName()+"线程是否活动中:"+thread.isAlive());

       System.out.println("start "+thread.getName()+"线程的状态是:"+thread.getState())

    }

}

其运行结果如下:

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多