当前位置:首页 » 编程语言 » java线程的几种状态

java线程的几种状态

发布时间: 2022-08-03 11:48:32

java线程中的几种状态以及相互转换

  • NEW:线程创建之后,但是还没有启动(notyetstarted)。

  • RUNNABLE:正在Java虚拟机下跑任务的线程的状态。在RUNNABLE状态下的线程可能会处于等待状态,因为它正在等待一些系统资源的释放,比如IO

  • BLOCKED:阻塞状态,等待锁的释放,比如线程A进入了一个synchronized方法,线程B也想进入这个方法,但是这个方法的锁已经被线程A获取了,这个时候线程B就处于BLOCKED状态

  • WAITING:等待状态,处于等待状态的线程是由于执行了3个方法中的任意方法。1.Object的wait方法,并且没有使用timeout参数;2.Thread的join方法,没有使用timeout参数3.LockSupport的park方法。处于waiting状态的线程会等待另外一个线程处理特殊的行为。再举个例子,如果一个线程调用了一个对象的wait方法,那么这个线程就会处于waiting状态直到另外一个线程调用这个对象的notify或者notifyAll方法后才会解除这个状态

  • TIMED_WAITING:有等待时间的等待状态,比如调用了以下几个方法中的任意方法,并且指定了等待时间,线程就会处于这个状态。1.Thread.sleep方法2.Object的wait方法,带有时间3.Thread.join方法,带有时间4.LockSupport的parkNanos方法,带有时间5.LockSupport的parkUntil方法,带有时间

  • TERMINATED:线程中止的状态,这个线程已经完整地执行了它的任务

Ⅱ java多线程有哪些状态

初始态:一个线程调用了new方法之后,并在调用start方法之前的所处状态。

就绪:一旦线程调用了start 方法,线程就转到Runnable 状态。

Ⅲ 【Java基础】线程生命周期有哪些阶段

Java线程具有五中基本状态

新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread();

就绪状态(Runnable):当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待CPU调度执行,并不是说执行了t.start()此线程立即就会执行;

运行状态(Running):当CPU开始调度处于就绪状态的线程时,此时线程才得以真正执行,即进入到运行状态。注:就 绪状态是进入到运行状态的唯一入口,也就是说,线程要想进入运行状态执行,首先必须处于就绪状态中;

阻塞状态(Blocked):处于运行状态中的线程由于某种原因,暂时放弃对CPU的使用权,停止执行,此时进入阻塞状态,直到其进入到就绪状态,才 有机会再次被CPU调用以进入到运行状态。根据阻塞产生的原因不同,阻塞状态又可以分为三种:

1.等待阻塞:运行状态中的线程执行wait()方法,使本线程进入到等待阻塞状态;

2.同步阻塞 -- 线程在获取synchronized同步锁失败(因为锁被其它线程所占用),它会进入同步阻塞状态;

3.其他阻塞 -- 通过调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。

死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期。

Ⅳ JAVA中,线程有哪五个基本状态他们之间如何让转化并简述线程周期。

java中,每个线程都需经历新生、就绪、运行、阻塞和死亡五种状态,线程从新生到死亡的状态变化称为生命周期。
用new运算符和Thread类或其子类建立一个线程对象后,该线程就处于新生状态。



Ⅳ JAVA中线程有哪五个基本状态它们之间如何让转化

java中,每个线程都需经历新生、就绪、运行、阻塞和死亡五种状态,线程从新生到死亡的状态变化称为生命周期。
用new运算符和Thread类或其子类建立一个线程对象后,该线程就处于新生状态。
新生--->就绪:通过调用start()方法
就绪--->运行:处于就绪状态的线程一旦得到CPU,就进入运行状态并自动调用自己的run()方法
运行--->阻塞:处于运行状态的线程,执行sleep()方法,或等待I/O设备资源,让出CPU并暂时中止自己运行,进入阻塞状态
阻塞--->就绪:睡眠时间已到,或等待的I/O设备空闲下来,线程便进入就绪状态,重新到就绪队列中等待CPU。当再次获得CPU时,便从原来中止位置开始继续运行。
运行--->死亡:(1)(正常情况下)线程任务完成
(2)(非正常状况)线程被强制性的中止,如通过执行stop()或destroy()方法来终止一个线程

Ⅵ 基于java 线程的几种状态

下面是java 线程的5种状态:

1、新建(new)

新建一个线程的对象。

2、可运行(runable)

线程对象创建后,其他线程调用该线程的start方法。或者该线程位于可运行线程池中等待被线程调用,已获取cpu的使用权。

3、运行(running)

可运行的线程获取了cpu的使用权,执行程序代码

4、阻塞(block)

由于某些原因该线程放弃了cpu的使用权。停止执行。除非线程进入可运行的状态,才会有机会获取cpu的使用权。

(1)等待阻塞:运行中的线程执行wait方法,这时候该线程会被放入等待队列。

(2)同步阻塞:运行中的线程获取同步锁,如果该同步锁被别的线程占用,这个线程会成被放入锁池,等待其他线程释放同步锁。

(3)其他阻塞:运行的线程执行sleep或者join方法这个线程会成为阻塞状态。当sleep超时,join等待线程终止,该线程会进入可运行状态。

5、死亡(dead)

线程run mian 执行完毕后,或者因为某些异常产生退出了 run 方法,该线程的生命周期结束。

Ⅶ java线程有哪些状态

新生、就绪、运行、阻塞和死亡
java中,每个线程都需经历新生、就绪、运行、阻塞和死亡五种状态,线程从新生到死亡的状态变化称为生命周期。

Ⅷ Java中线程的几种可用状态有哪些请大家解释一下。

线程在执行过程中,可以处于下面几种状态:
1、就绪(Runnable):线程准备运行,不一定立马就能开始执行。
2、运行中(Running):进程正在执行线程的代码。
3、等待中(Waiting):线程处于阻塞的状态,等待外部的处理结束。
4、睡眠中(Sleeping):线程被强制睡眠。
5、I/O阻塞(BlockedonI/O):等待I/O操作完成。
6、同步阻塞(BlockedonSynchronization):等待获取锁。
7、死亡(Dead):线程完成了执行。

热点内容
浏览器内核源码 发布:2025-01-23 04:41:34 浏览:659
精英版缤智少了些什么配置 发布:2025-01-23 04:41:30 浏览:356
编写c编译器 发布:2025-01-23 04:41:30 浏览:968
可以解压war包的编译软件 发布:2025-01-23 04:38:28 浏览:986
vivo手机有编译功能吗 发布:2025-01-23 04:31:57 浏览:568
自己架设云手机服务器 发布:2025-01-23 04:31:17 浏览:949
gcc命令行编译的方法 发布:2025-01-23 04:30:31 浏览:397
我的云服务器地址近期价格 发布:2025-01-23 04:29:05 浏览:625
js预览上传图片 发布:2025-01-23 04:28:54 浏览:407
特斯拉在哪里输入密码 发布:2025-01-23 04:05:29 浏览:205