java sleep wait 性能_Java多线程状态详解以及sleep和wait的区别

对于线程的理解可以想象成每个人,就跟人一样每个人都是有状态的,比如这个人刚出生,刚睡醒,开始跑了,被绑住了,在等待,死亡都可以用来理解线程的状态。

一、线程的六种状态

我们查看线程源码会发现线程的六大状态NEW 新建状态,就是线程在start方法没有执行前就属于NEW状态

RUNNABLE 可以运行状态,线程启动了,等待CPU时间片的切换让其运行,等待资源调度

BLOCKED 阻塞状态,使用synchronized或者lock时没有获得锁时该线程就是锁状态

WAITING 等待状态,使用Thread.join()或者.wait()时,就进入了等待状态

TIMED_WAITING 计时等待,也就是说设定了等待时间,sleep(时间),join(时间),wait(时间)

TERMINATED 终止状态,线程中断或者停止运行的状态

public enum State {

/**

* Thread state for a thread which has not yet started.

*/

NEW,

RUNNABLE,

BLOCKED,

WAITING,

TIMED_WAITING,

TERMINATED;

}

二、用代码测试这些状态是在什么情况下发生的

我们使用代码对线程的状态进行一步步的监控,来更加深入的理解线程状态的触发方式,用休眠主线程的方式不断地判断子线程的状态方式,对于wait()我们可以用一个新线程进行唤醒ÿ

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值