java如何让线程sheep_Java线程状态以及 sheep()、wait()、yield() 的区别-Go语言中文社区...

本文详细介绍了Java线程的五种状态,包括新建、就绪、运行、阻塞和死亡,并重点讲解了sleep、wait、yield方法的工作原理和区别。线程的wait()方法会让线程释放锁进入等待队列,而sleep()则不会释放锁,只会让线程休眠。此外,wait()需要在同步环境中调用,否则会抛出异常,而yield()则让当前线程让出CPU执行权,但不保证立即切换到其他线程。文章还提到了线程的同步阻塞和死锁问题,以及suspend()和resume()方法的历史遗留问题。
摘要由CSDN通过智能技术生成

前言

最近看到很多人都在讨论多线程的问题,于是写出了这篇博客,希望可以帮到正在学习和使用这块的朋友们,首先我们先看看两个图(两个图都来自其他码农的分享)。

969ba8a3ccc6b77fd8cd7399765237ba.png 

33793a90bfd3cffbe9b8ba5d1b4ee681.png

这两个图是一样的逻辑,这里一起罗列出来,下面让我们用语句来简单描述下两个图:

sleep 让线程从 【running】 → 【阻塞态】 时间结束/interrupt → 【runnable】

wait 让线程从 【running】 → 【等待队列】notify → 【锁池】 → 【runnable】

当我们看到这个图的时候首先会看到线程的几种状态,下面让我们先来分别说明一下:

线程共包括一下5种状态:

1. 新建、初始状态(New) :线程对象被创建后就进入了新建状态,Thread thread = new Thread();

2. 就绪(Runnable):也被称之为“可执行状态”,当线程被new出来后,其他的线程调用了该对象的start()方法,即thread.start(),此时线程位于“可运行线程池”中,只等待获取CPU的使用权

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值