新闻资讯

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻资讯列表

java线程有哪几种状态

发布时间:2023-07-17 07:49:50

Java线程的状态

Java线程的状态大致可以分为6种,分别是New、Runnable、Blocked、Waiting、Timed_Waiting和Terminated。

1.New状态

New状态是指当用new关键字创建了一个线程对象时,该线程处于New状态。在这个状态中,操作系统中还没有创建任何线程履行体的履行线程。

示例:

publicclassNewDemo{publicstaticvoidmain(String[]args){Threadthread=newThread();thread.start();//线程的运行转到Runnable状态}}

2.Runnable状态

Runnable状态是指线程已在JVM中创建,但是还没有运行。在这个状态中,操作系统中已为线程分配了必要的资源,比如CPU资源,但是线程还没有开始运行。当线程调用start()方法后,线程变成Runnable状态。

示例:

publicclassRunnableDemo{publicstaticvoidmain(String[]args){Threadthread=newThread(()->{//这里是线程运行的代码});thread.start();//线程的运行转到Runnable状态}}

3.Blocked状态

Blocked状态是指线程被阻塞或挂起。在这个状态中,线程虽然有了足够的资源,但是却没法运行。可能的缘由是线程正在等待某个资源的释放,或正在等待某个条件的满足。

示例:

publicclassBlockedDemo{publicstaticvoidmain(String[]args){Objectlock=newObject();Threadthread=newThread(()->{synchronized(lock){//这里是线程需要等待的代码}});thread.start();//线程的运行转到Runnable状态//下面是其他代码逻辑synchronized(lock){lock.notifyAll();//释放锁}}}

4.Waiting状态

Waiting状态是指线程等待其他线程的通知。在这个状态中,线程不会占用CPU资源,直到另外一个线程的通知才能继续运行。

示例:

publicclassWaitingDemo{publicstaticvoidmain(String[]args){Objectlock=newObject();Threadthread1=newThread(()->{synchronized(lock){try{lock.wait();//线程等待lock对象的通知}catch(InterruptedExceptione){e.printStackTrace();}}});Threadthread2=newThread(()->{//下面是其他代码逻辑synchronized(lock){lock.notifyAll();//发送通知给等待的线程}});thread1.start();thread2.start();}}

5.Timed_Waiting状态

Timed_Waiting状态是指线程等待指定时长的时间,在这个状态中,线程也不会占用CPU资源,但是会在指定时长以后自动转换成Runnable状态。

示例:

publicclassTimedWaitingDemo{publicstaticvoidmain(String[]args){Threadthread=newThread(()->{try{Thread.sleep(1000);//线程等待1秒}catch(InterruptedExceptione){e.printStackTrace();}});thread.start();//线程的运行转到Runnable状态}}

6.Terminated状态

Terminated状态是指线程已履行完了run()方法,进入了死亡状态。在这个状态中,线程占用的资源会被JVM释放。

示例:

publicclassTerminatedDemo{publicstaticvoidmain(String[]args){Threadthread=newThread(()->{//这里是线程运行的代码});thread.start();try{thread.join();//等待线程履行终了}catch(InterruptedExceptione){e.printStackTrace();}//线程已履行终了,进入Terminated状态}}

桂>哥>网>络www.guIgege.cn

X

截屏,微信识别二维码

微信号:muhuanidc

(点击微信号复制,添加好友)

打开微信

微信号已复制,请打开微信添加咨询详情!