java基础-线程有哪些状态
线程有哪些状态?
答:Java中的线程状态由Thread类的内部枚举类State表示,总共有6种状态。NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED
详细说明:
NEW(新建):通过new关键字创建一个Thread对象后,线程的初始状态是NEW。
RUNNABLE(可运行):当调用线程的start()方法后,线程的状态会变为RUNNABLE。RUNNABLE状态表示线程是可运行的,但是否正在运行取决于操作系统的调度。特别说明:当线程调用阻塞的方法如I/O操作,线程状态仍然是RUNNABLE。
BLOCKED(阻塞):BLOCKED状态只和内置锁有关。每个对象在内存中都有一个内置锁,它是java对象的内存结构的Mark Word部分。
WAITING(等待):通过object.wait()、lock.lock()、otherThread.join() 等方法时,当前线程会主动变为WAITING状态。处于这种状态的线程不会被分配CPU执行时间。
TIMED_WAITING(定时等待):通过Thread.sleep(1000)、object.wait(1000)、otherThread.join(1000)等方法可以使线程进入TIMED_WAITING状态。处于这种状态的线程不会被分配CPU执行时间。
TERMINATED(终止):线程执行完任务或由于异常而结束执行后,线程进入TERMINATED状态。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了