线程的几种状态

哎哟喂,你这是在啃操作系统课本呢?我跟你讲啊,我之前在一家软件公司做开发,那会儿天天跟线程打交道,头都大了。

记得有一年,公司接了个大项目,客户要求特别急。
我们那个团队,十几号人,分了几个小组,每个小组搞个模块。
结果呢?其中一个小组,就俩哥们儿,搞了个多线程优化,嘿,那效率真是噌噌往上涨。
以前跑半天的事儿,他们改完,一分钟就搞定了。
客户一来验收,直夸我们牛。

不过啊,这玩意儿也不是那么好搞的。
你想想,线程多了,就容易出现各种问题。
我跟你讲,有一回,我写的代码,搞了五个线程,本来想着并行处理,结果呢?死锁了。
五个线程互相等着对方释放资源,谁也不先动,最后只能重启服务器。
那天晚上,我加到凌晨三点,把代码又给改回来了。
真是折腾人。

所以啊,你说这线程状态,什么新建、运行、阻塞、等待、超时等待、终止,每个状态都有啥情况,你得搞明白了。
不然,一不小心,程序就卡死,或者出现各种乱七八糟的问题。

你问那么多干嘛?用处大着呢。
比如,你搞个电商网站,用户访问量一上来,你得用多线程处理请求,不然网站直接就瘫痪了。
再比如,你搞个数据处理程序,用多线程可以快点把数据给处理完,提高效率。

不过啊,这东西也分情况。
你要是搞个简单的个人应用,用单线程就够了,搞那么复杂干嘛?我跟你讲,我有个朋友,他搞了个个小工具,就一个人用,他居然用了十几个线程,结果呢?搞得他自己都搞不懂了,最后还是改单线程了。

所以啊,你说这线程,用好了,能提高效率,用不好,那就是自找麻烦。
你得根据实际情况,看看是不是真的需要那么多线程。
你要是搞不懂,就多看点资料,多写写代码,慢慢就熟练了。

我跟你讲,这线程这东西,真是既简单又复杂。
简单就一个线程,复杂就线程之间要互相协调,要防止死锁,要处理各种异常。
你要是搞明白了,那你的程序就能跑得又快又稳;搞不明白,那你的程序就可能出各种问题。

所以啊,你问这么多线程状态,是想学学怎么用线程吗?你要是的话,我建议你先从简单的开始,搞个单线程程序,跑跑看看,然后再慢慢加线程,看看效果怎么样。
多实践,慢慢就懂了。

你要是还有其他问题,就跟我说,我跟你讲讲我的经验。
我这十年,踩过的坑,够写一本小册子了。

java线程的几种状态分别是什么

Java线程六种状态直接用。

1 . NEW:创建未启动状态。
比如new Thread()但没start()。

2 . RUNNABLE:CPU可执行状态。
比如main线程start()后。

3 . BLOCKED:锁等待状态。
比如wait()后没拿到锁。

4 . WAITING:无限期等待。
比如Thread.sleep(1 000)。

5 . TIMED_WAITING:限时等待。
比如wait(5 000)。

6 . TERMINATED:线程结束。
比如run()执行完。

关键点: BLOCKED等锁。
WAITING/TIMED_WAITING自己放权等唤醒。
RUNNABLE随时可能跑。

Thread.getState()直接看状态。