关于Java线程状态的学习分享
创始人
2025-05-30 19:59:57

目录

1.线程状态分为哪几种?它们有什么样的含义?

2.各状态之间的切换


1.线程状态分为哪几种?它们有什么样的含义?

     ① NEW(new)

          操作系统中线程还未创建出来,只是有个Thread类对象.(线程在start()之前)

     ② TERMINATED(terminated)

          线程已经执行完毕

     ③RUNNABLE (runnable)

          有两种:一种是正在运行,另一种是随时可以上CPU运行都可以是runnable状态.

     ④ TIMED_WAITING(timed_waiting)

          指定时间等待,使用sleep(),因为在线程中如果加上了休眠,那么线程大部分时间都是花在休眠上(我们设定的休眠时长是以毫秒为单位,远比CPU执行速度要慢).

     ⑤ BLOCK(block)

          线程运行过程中,等待锁时出现的状态.

     ⑥ WAIT(wait)

          线程运行过程中,使用wait()方法的状态.

2.各状态之间的切换

    ● 主要的图例:

    ● 代码示例:

       通过Thread对象的getState()方法获取线程状态.

    public static void main(String[] args) throws InterruptedException {Thread thread1 = new Thread(() -> {while (true) {try {System.out.println("thread1State:"+Thread.currentThread().getState());Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}});//start()线程创建之前System.out.println("thread1State:"+thread1.getState());thread1.start();Thread.sleep(2000);//线程结束后再打印其状态就会是TERMINATED状态,把线程中的while循环去掉,线程就会正常执行完毕System.out.println("thread1State:"+thread1.getState());}

注:对于Blocked和wait状态的例子之后再补充.

相关内容

热门资讯

今年我省粮食产量达515.56... (来源:辽宁日报)转自:辽宁日报 图为在中储粮(盘锦)储运有限公司,装运粮食的重型卡车排起长队...
国家发展改革委部署促进投资止跌... (来源:辽宁日报)转自:辽宁日报 新华社北京12月13日电 (记者魏玉坤) 记者13日从全国发展和改...
江苏省实施《中华人民共和国森林... (来源:新华日报) 目 录 第一章 总则 第二章 森林、林木和林地权属管理...
姜堰数字化产品讲“活”理论 (来源:新华日报) □ 本报记者 卢佳乐 通讯员 姜宣 “王教授,您约我‘喝茶论道’,...
联合国维和部队在苏丹遇袭 6人... 转自:财联社【联合国维和部队在苏丹遇袭 6人死亡】财联社12月14日电,当地时间13日,苏丹武装部队...