打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
java学习——111.线程的状态

线程是从创建到执行完毕,总共有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())

    }

}

其运行结果如下:

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
[Java并发编程]
多线程爬坑之路
沉淀再出发:再谈java的多线程机制
Java并发之线程中断
Java总结篇系列:Java多线程(一)
整理总结Java多线程程序编写的要点
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服