2.sleep和wait的区别?

本文探讨了Java中sleep()和wait()方法的区别,包括它们存在的位置、使用方式、使用条件及作用。sleep()是Thread类的方法,用于线程暂停,不释放锁;而wait()是Object类的方法,需要在同步环境中使用,会释放锁并进入等待池,需通过notify()或notifyAll()唤醒。
摘要由CSDN通过智能技术生成

sleep和wait的区别?

因为wait方法需要在Synchronized块或者Synchronized方法中执行,所以我们先来复习一下什么是Synchronized
Synchronized:synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程(例如线程A),运行到这个方法时,都要检查有没有其它线程B(或者C、 D等)正在用这个方法(或者该类的其他同步方法),有的话要等正在使用synchronized方法的线程B(或者C 、D)运行完这个方法后再运行此线程A,没有的话,锁定调用者,然后直接运行。它包括两种用法:synchronized 方法和 synchronized 块。
说正题,sleep和wait的区别都有什么?

  1. 存在的位置不同:sleep()方法是线程(Thread)中的方法,wait()是Object类中的方法
  2. 使用的方式不用:
    • sleep():在指定的毫秒数内让当前正在执行的线程休眠(暂停执行).该方法中传入一个单位为毫秒的时间参数,在调用该方法时当前线程会暂停。(API)
    • wait():在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。也就是说在调用notify() 方法或 notifyAll() 方法前,当前线程并不会执行。(API)
    • wait(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值