首页 > 后端开发 > 正文

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

2024-04-02 18:07:25 | 我爱编程网

我爱编程网小编给大家带来了Java中线程的几种可用状态有哪些?请大家解释一下。相关文章,一起来看一下吧。

本文目录一览:

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

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

线程在执行过程中,可以处于下面几种状态:

1、就绪(Runnable):线程准备运行,不一定立马就能开始执行。

2、运行中(Running):进程正在执行线程的代码。

3、等待中(Waiting):线程处于阻塞的状态,等待外部的处理结束。

4、睡眠中(Sleeping):线程被强制睡眠。

5、I/O阻塞(BlockedonI/O):等待I/O操作完成。

6、同步阻塞(BlockedonSynchronization):等待获取锁。

7、死亡(Dead):线程完成了执行。

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

java程序运行过程中如何暂停,恢复?

我爱编程网

java控制程序执行,使用的是Thread这个类,可以控制程序暂停或者休眠几秒再执行。示例如下:

public abstract class MyThread extends Thread {

private boolean suspend = false;

private String control = ""; // 只是需要一个对象而已,这个对象没有实际意义

public void setSuspend(boolean suspend) {

if (!suspend) {

synchronized (control) {

control.notifyAll();

}

}

this.suspend = suspend;

}

public boolean isSuspend() {

return this.suspend;

}

public void run() {

while (true) {

synchronized (control) {

if (suspend) {

try {

control.wait();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

this.runPersonelLogic();

}

}

protected abstract void runPersonelLogic();

public static void main(String[] args) throws Exception {

MyThread myThread = new MyThread() {

protected void runPersonelLogic() {

System.out.println("myThead is running");

}

};

myThread.start();

Thread.sleep(3000);

myThread.setSuspend(true);

System.out.println("myThread has stopped");

Thread.sleep(3000);

myThread.setSuspend(false);

}

}

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

Java如何实现线程的暂停和重新启用?求大神

我爱编程网(https://www.52biancheng.com)小编还为大家带来Java如何实现线程的暂停和重新启用?求大神的相关内容。

JAVA中线程开始有start方法,暂停用sleep(time)方法,线程停止用stop方法,线程等待wait方法,java 中没有线程重启一说,只能说线程唤醒notifyAll()或是notify方法,前一个notifyAll()方法是唤醒所有的已休眠或是等待状态下的线程。具体的一种参数请参照JDK文档。

Java中的线程的

生命周期

大体可分为5种状态。如下:

1.新建(NEW):新创建了一个线程对象。

2.可运行(RUNNABLE):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行

线程池

中,等待被线程调度选中,获取cpu 的使用权 。

3.运行(RUNNING):可运行状态(runnable)的线程获得了cpu 时间片(timeslice) ,执行程序代码。

4.阻塞(BLOCKED):阻塞状态是指线程因为某种原因放弃了cpu 使用权,也即让出了cpu timeslice,暂时停止运行。直到线程进入可运行(runnable)状态,才有机会再次获得cpu timeslice 转到运行(running)状态。阻塞的情况分三种:

(一).等待阻塞:运行(running)的线程执行o.wait()方法,JVM会把该线程放入等待队列(waitting queue)中。

(二).同步阻塞:运行(running)的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池(lock pool)中。

(三).其他阻塞:运行(running)的线程执行Thread.sleep(long ms)或t.join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入可运行(runnable)状态。

5.死亡(DEAD):线程run()、main() 方法执行结束,或者因异常退出了run()方法,则该线程结束生命周期。死亡的线程不可再次复生。

以上就是我爱编程网小编给大家带来的Java中线程的几种可用状态有哪些?请大家解释一下。,希望能对大家有所帮助。更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“Java中线程的几种可用状态有哪些?请大家解释一下。”相关推荐
java线程运行怎么有第六种状态
java线程运行怎么有第六种状态

java线程运行怎么有第六种状态其实线程只有"就绪"、"阻塞"、"运行"三种状态:1.运行状态,线程正在干活的状态2.就绪状态,CPU正在忙活别的,线程摇晃着一个"恭候您光临"的小旗子的状态3.阻塞状态,线程主动让出CPU资源,摇晃着一个"我这会还不能出台您稍后再来"的小旗子的状态"新建"和"终止"这两种状态其实并不是线程的状态,而是java.lang.Thread对象的状态

2024-04-29 08:53:25
用Java实现多线程有哪些途径?
用Java实现多线程有哪些途径?

用Java实现多线程有哪些途径?1,创建Thread类的子类在这个途径中,用户程序需要创建自己的Thread类的子类,并在子类中重新定义自己的run()方法,这个run()方法中包含了用户线程的操作。这样在用户程序需要建立自己的线程时,它只需要创建一个已定义好的Thread子类的实例就可以了。例:publicclassTestThread{...(中间的就不写了)}c

2024-07-01 21:35:40
php 方面大家一般用哪些工具进行代码加密
php 方面大家一般用哪些工具进行代码加密

php宝塔搭建实战双子星IPTV管理系统php源码带反编译apk欢迎来到web测评,本期分享一套php开发的双子星IPTV管理系统,附带反编译apk源码,满足你对系统项目的期待。如果你之前询问过系统项目搭建,现在就有一个好机会,通过本文内容,你将学习如何使用php宝塔搭建这套管理系统。即使你对安装宝塔感到困惑,也不用担心,因为我之前有详细的教程,可以提供参考。双子星IPTV管理系

2024-12-05 01:44:12
PHP7的五大新特性有哪些 PHP7的五大新特性有哪些一览
PHP7的五大新特性有哪些 PHP7的五大新特性有哪些一览

php函数中中$和&$的区别&表示获取地址,类似指针,和C语言是差不多的,在VB、VFP等语言里面叫引用,其实是一个东西。在用于函数参数调用的时候,可以这样简单的理解:使用$是传递的变量的一个拷贝,函数里面对参数的修改只在函数执行期间有效,不影响函数外面原来变量的值。使用&传递的就不复制,传递的是变量的引用(也叫指针,相当于快捷方式),那样在函数里面对参数的修改会影响函

2024-10-20 13:13:23
安装了java之后怎样运行程序(怎样在一个java程序中获得另一个程序的运行状态)
安装了java之后怎样运行程序(怎样在一个java程序中获得另一个程序的运行状态)

安装了java之后怎样运行程序java,你指的是JDK(javadevelopmentkits)安装完成了,你需要完成以下几个步骤:首先:先将JDK的path,classpath,JAVA_HOME,配置到电脑变量里面,然后:测试JDK是否安装成功,进入电脑控制台,XP是开始菜单->运行选项,Win7为开始菜单->搜索内容里面输入cmd进入控制台,在控制台输入java-v

2024-03-26 06:19:07
PHP有哪几种外部变量?如何使用这几种变量?
PHP有哪几种外部变量?如何使用这几种变量?

php调用其他文件变量★PHP变量是有作用域(指定的有效范围)的:函数内声明的变量只对该函数有效,出了函数的范围就会无效;同理在函数以外声明的变量在函数中访问也是无效的;函数内的变量跨函数访问也是无效的。★问题推测:听你上面说的情况,你的$username变量应该声明在函数或者类里边,然后从函数外访问;或者声明在函数外,但从函数中进行访问了。

2024-08-04 15:27:28
有没有家长朋友讲一下编程猫怎么样吗?
有没有家长朋友讲一下编程猫怎么样吗?

有没有家长朋友讲一下编程猫怎么样吗?孩子第一次接触编程猫是感觉好玩,跟他平时玩的手游截然不同,这激发起他前所未有的兴趣,4节体验课下来他主动和我说“妈妈我还要继续学下去”我第一次感到他对一件事情的认真。开课后真真切切的感觉到天使老师对孩子们的认真负责,从和孩子们视频解答问题互动到每晚的睡前故事到伴读计划到给全班孩子的手写信,太让人感动了,孩子也喜欢多才多艺的天使老师,说以后也要像老师一样会弹

2024-01-07 17:06:31
Java编程中常见异常有哪些?
Java编程中常见异常有哪些?

Java编程中常见异常有哪些?在Java编程中,常见的错误有很多种,下面是一些常见的错误类型:语法错误(SyntaxError):这是最基础的错误,通常发生在代码的拼写、标点符号、括号、分号等方面。例如,遗漏了一个分号或括号不匹配等。运行时错误(RuntimeError):这种错误通常发生在程序运行时,比如内存不足、数组越界等。这些错误通常在程序设计中无法完全避免,但可以通过合理的

2024-05-30 11:25:41