线程的基本方法

**线程相关的基本方法有 wait,notify,notifyAll,sleep,join,yield 等

线程等待(wait)

	调用该方法的线程进入 WAITING 状态,只有等待另外线程的通知或被中断才会返回, 需要注意的是调用 wait()方法后,会释放对象的锁。因此,wait 方法一般用在同步方法或 同步代码块中。

线程睡眠(sleep)

	sleep 导致当前线程休眠,与 wait 方法不同的是 sleep 不会释放当前占有的 锁,sleep(long)会导致线程进入 TIMED-WATING 状态,而 wait()方法会导致当前线程进入 WATING 状态

线程让步(yield)

	yield 会使当前线程让出 CPU 执行时间片,与其他线程一起重新竞争 CPU 时间片。一 般情况下,优先级高的线程有更大的可能性成功竞争得到 CPU 时间片,但这又不是绝对的, 有的操作系统对 线程优先级并不敏感

Join 等待其他线程终止

	join() 方法,等待其他线程终止,在当前线程中调用一个线程的 join() 方法,则当 前线程转为阻塞状态,回到另一个线程结束,当前线程再由阻塞状态变为就绪状态,等待 cpu 的宠幸

线程唤醒(notify)

	Object 类中的 notify() 方法,唤醒在此对象监视器上等待的单个线程,如果所有线 程都在此对象上等待,则会选择唤醒其中一个线程,选择是任意的,并在对实现做出决定时 发生,线程通过调用其中一个 wait() 方法,在对象的监视器上等待,直到当前的线程放弃 此对象上的锁定,才能继续执行被唤醒的线程,被唤醒的线程将以常规方式与在该对象上 主动同步的其他所有线程进行竞争。类似的方法还有 notifyAll() ,唤醒再次监视器上等 待的所有线程

在 java 中 wait 和 sleep 方法的不同

	其实吧最大的不同是在等待时 wait 会释放锁,而 sleep 一直持有锁。wait 通常被用于线程 间交互,sleep 通常被用于暂停执行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值