sleep(),yield(),join(),wait()

sleep(),yield(),join(),wait()

sleep()

sleep是Thread类的静态方法,在指定的时间内让当前线程暂停执行,但不会释放锁标志

也就是使线程进入阻塞状态

wait()

Object类的方法,在其他的线程调用notify()/notifyAll()之前,当前线程保持 等待,会释放锁标志其他线程可以在当前线程wait期间抢占锁让线程进入等待(阻塞)状态

wait与notify必须在synchronized函数中或者synchronized代码块中使用,其他地方的使用虽然编译不会出错,但是会抛出异常。

yield()

yield只是让当前的线程‘放弃cpu资源,但是放弃的时间不确定,有可能放弃之后又获得了cpu资源。也就是,让线程再次进入可执行状态,yield只能使得同优先级或者优先级更高的线程获得执行的可能yield不会释放锁

join()

在一般情况下,往往主线程会先于其他线程执行结束。但是有时候主线程需要等待其他线程的执行结果,这时候就可以使用join()方法来让主线程暂停执行,先执行其他线程,直到其他线程执行完毕,主线程才会接着执行。

也就是使得主线程阻塞,让调用join()的线程先执行。还有一个join(long waitTime),可以使当前线程只阻塞 wait time 毫秒的时间。当调用join()方法的线程被中断的时候,程序会抛出异常

join(long time)的内部实现是使用的wait(long time)实现的,所以,在同步的代码中,会释放锁

转载于:https://www.cnblogs.com/GaryZz/p/11123101.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值