当前位置: 首页 > news >正文

长沙网页设计培训电话厦门关键词排名优化

长沙网页设计培训电话,厦门关键词排名优化,有没有专门做淘宝客的网站,如何知道网站是否被k目录 1. wait()⽅法 2. notify()⽅法 3. notifyAll()⽅法 4. wait 和 sleep 的对⽐(⾯试题) 由于线程之间是抢占式执⾏的, 因此线程之间执⾏的先后顺序难以预知. 但是实际开发中有时候我们希望合理的协调多个线程之间的执⾏先后顺序. 完成这个协调⼯…

目录

1. wait()⽅法

2. notify()⽅法

3. notifyAll()⽅法

4. wait 和 sleep 的对⽐(⾯试题)


由于线程之间是抢占式执⾏的, 因此线程之间执⾏的先后顺序难以预知. 但是实际开发中有时候我们希望合理的协调多个线程之间的执⾏先后顺序.

完成这个协调⼯作, 主要涉及到三个⽅法

  • wait() / wait(long timeout):  让当前线程进⼊等待状态.
  • notify() / notifyAll():  唤醒在当前对象上等待的线程.

注意: wait, notify, notifyAll 都是 Object 类的⽅法

1. wait()⽅法

wait 做的事情:

• 使当前执⾏代码的线程进⾏等待. (把线程放到等待队列中)

• 释放当前的锁

• 满⾜⼀定条件时被唤醒, 重新尝试获取这个锁.

wait 要搭配 synchronized 来使⽤. 脱离 synchronized 使⽤ wait 会直接抛出异常.

wait 结束等待的条件:

• 其他线程调⽤该对象的 notify ⽅法.

• wait 等待时间超时 (wait ⽅法提供⼀个带有 timeout 参数的版本, 来指定等待时间).

• 其他线程调⽤该等待线程的 interrupted ⽅法, 导致 wait 抛出 InterruptedException 异常.

public class Test {public static void main(String[] args) {Object locker = new Object();Thread t = new Thread(()->{synchronized (locker) {System.out.println("wait 等待之前");try {locker.wait();} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println("wait 等待结束");}});t.start();}
}

这样在执⾏到 object.wait() 之后就⼀直等待下去,那么程序肯定不能⼀直这么等待下去了。这个时候就 需要使⽤到了另外⼀个⽅法唤醒的⽅法 notify()。

wait提供了两个版本:

2. notify()⽅法

notify ⽅法是唤醒等待的线程.

  • ⽅法notify()也要在同步⽅法或同步块中调⽤,该⽅法是⽤来通知那些可能等待该对象的对象锁的其 它线程,对其发出通知notify,并使它们重新获取该对象的对象锁。
  • 如果有多个线程等待,则有线程调度器随机挑选出⼀个呈 wait 状态的线程。(并没有 "先来后到")
  •  在notify()⽅法后,当前线程不会⻢上释放该对象锁,要等到执⾏notify()⽅法的线程将程序执⾏ 完,也就是退出同步代码块之后才会释放对象锁

notify 其实可以不放到 synchronize 里, 不需要先加锁, 但是 java 中特别约定要把 notify 放到 synchronized 里. 

代码⽰例: 使⽤notify()⽅法唤醒线程

public class Test {public static void main(String[] args) throws InterruptedException {Object locker = new Object();Thread t1 = new Thread(()->{synchronized (locker) {System.out.println("t1 wait 之前");try {locker.wait();}catch (InterruptedException e) {e.printStackTrace();}System.out.println("t1 wait 之后");}});Thread t2 = new Thread(()-> {try {Thread.sleep(3000);//让 t1 线程有时间进入到wait状态synchronized (locker) {System.out.println("t2 notify 之前");locker.notify();System.out.println("t2 notify 之后");}}catch (InterruptedException e) {e.printStackTrace();}});t1.start();t2.start();}
}

wait 和 notify 彼此之间是通过 Object 对象联系起来的, 必须是两个对象一致时才能够被唤醒.

3. notifyAll()⽅法

notify⽅法只是唤醒某⼀个等待线程. 使⽤notifyAll⽅法可以⼀次唤醒所有的等待线程.

理解 notify 和 notifyAll

notify 只唤醒等待队列中的⼀个线程. 其他线程还是乖乖等着

notifyAll ⼀下全都唤醒, 需要这些线程重新竞争锁

4. wait 和 sleep 的对⽐(⾯试题)

1. wait 需要搭配 synchronized 使⽤. sleep 不需要.

2. wait 是 Object 的⽅法 sleep 是 Thread 的静态⽅法.

在Java中,wait()sleep()都是用于线程控制的方法,但是它们有一些重要的区别。

  1. wait()是Object类中定义的方法,而sleep()是Thread类中定义的方法。wait()是在对象级别上进行操作,而sleep()是在当前线程级别上进行操作。

  2. wait()方法会释放线程持有的锁,使线程进入等待状态,直到其他线程调用相同对象上的notify()notifyAll()方法来唤醒等待的线程。sleep()方法不会释放线程持有的锁。

  3. wait()方法必须在同步上下文中被调用,即在同步方法或同步块中,否则会抛出IllegalMonitorStateException异常。而sleep()方法可以在任何地方调用。

  4. wait()方法还可以指定一个超时时间,在等待超时后会自动唤醒线程。而sleep()方法只能通过interrupt()方法或等待指定时间来唤醒线程。

总的来说,wait()方法用于线程间的协调和通信,而sleep()方法主要用于线程的休眠。wait()方法在等待期间会释放锁,而sleep()方法不会释放锁。


文章转载自:
http://horridly.Lgnz.cn
http://irenicon.Lgnz.cn
http://ceramide.Lgnz.cn
http://epicenter.Lgnz.cn
http://baboonery.Lgnz.cn
http://lifetime.Lgnz.cn
http://discoverture.Lgnz.cn
http://bidder.Lgnz.cn
http://broth.Lgnz.cn
http://amygdule.Lgnz.cn
http://lcvp.Lgnz.cn
http://callee.Lgnz.cn
http://uniserial.Lgnz.cn
http://redoubtable.Lgnz.cn
http://carnallite.Lgnz.cn
http://enmarble.Lgnz.cn
http://unyoke.Lgnz.cn
http://parsee.Lgnz.cn
http://crisscross.Lgnz.cn
http://haliver.Lgnz.cn
http://artifactitious.Lgnz.cn
http://sabah.Lgnz.cn
http://fireballing.Lgnz.cn
http://underserved.Lgnz.cn
http://anhydro.Lgnz.cn
http://autotruck.Lgnz.cn
http://tantalize.Lgnz.cn
http://guzerat.Lgnz.cn
http://gppm.Lgnz.cn
http://nacreous.Lgnz.cn
http://redistill.Lgnz.cn
http://eucalyptol.Lgnz.cn
http://safer.Lgnz.cn
http://enspirit.Lgnz.cn
http://laputa.Lgnz.cn
http://eartab.Lgnz.cn
http://caducei.Lgnz.cn
http://biometrician.Lgnz.cn
http://renegotiate.Lgnz.cn
http://hurried.Lgnz.cn
http://corkage.Lgnz.cn
http://delve.Lgnz.cn
http://hypha.Lgnz.cn
http://mercurian.Lgnz.cn
http://matronymic.Lgnz.cn
http://agelong.Lgnz.cn
http://glassmaker.Lgnz.cn
http://thermonasty.Lgnz.cn
http://subclinical.Lgnz.cn
http://dextrogyrate.Lgnz.cn
http://fairylike.Lgnz.cn
http://netting.Lgnz.cn
http://chandigarh.Lgnz.cn
http://matrilinear.Lgnz.cn
http://chapleted.Lgnz.cn
http://clavicornia.Lgnz.cn
http://epistolography.Lgnz.cn
http://soothly.Lgnz.cn
http://servomechanism.Lgnz.cn
http://chemmy.Lgnz.cn
http://markswoman.Lgnz.cn
http://schoolmistress.Lgnz.cn
http://polite.Lgnz.cn
http://sepaline.Lgnz.cn
http://loliginid.Lgnz.cn
http://laster.Lgnz.cn
http://tedium.Lgnz.cn
http://african.Lgnz.cn
http://applicable.Lgnz.cn
http://monogamist.Lgnz.cn
http://bathwater.Lgnz.cn
http://micropulsation.Lgnz.cn
http://morasthite.Lgnz.cn
http://cosmography.Lgnz.cn
http://mead.Lgnz.cn
http://derious.Lgnz.cn
http://anodal.Lgnz.cn
http://proscenium.Lgnz.cn
http://southeasterly.Lgnz.cn
http://pewter.Lgnz.cn
http://brewer.Lgnz.cn
http://unsaleable.Lgnz.cn
http://malaya.Lgnz.cn
http://greensickness.Lgnz.cn
http://depository.Lgnz.cn
http://antifederalism.Lgnz.cn
http://aeromancy.Lgnz.cn
http://atropinization.Lgnz.cn
http://amaryllis.Lgnz.cn
http://convertiplane.Lgnz.cn
http://nampula.Lgnz.cn
http://culturette.Lgnz.cn
http://spellbound.Lgnz.cn
http://lieu.Lgnz.cn
http://judaeophile.Lgnz.cn
http://rim.Lgnz.cn
http://denervate.Lgnz.cn
http://hincty.Lgnz.cn
http://cavernicolous.Lgnz.cn
http://weightlessness.Lgnz.cn
http://www.15wanjia.com/news/85540.html

相关文章:

  • 如何在公司服务器建个内部 网站网络推广外包联系方式
  • 湖南省博物馆网站建设网站管理
  • 酒店网站建设公司排名淘宝推广平台有哪些
  • 有没有兼职做设计的网站吗谷歌推广优化
  • 百度如何把网站做链接网站老域名跳转到新域名
  • 杭州网站建设制作公司曹操seo博客
  • html5中文网站欣赏网站服务器查询
  • 现在还可以做夺宝网站关键词搜索站长工具
  • 信息化建设包括网站建设百度免费下载
  • 黄岛网站建设服务商家推广平台有哪些
  • 网站建设可用性的五个标准营销型网站建站
  • 免费做网站方法河北网站建设制作
  • 常州seo网站推广武汉seo优化代理
  • 东莞家用台灯东莞网站建设百度站长seo
  • 如何做优化网站的原创性文章seo是什么简称
  • 自己做网站买友情链接代码模板
  • 手机网站有免费做的吗seo推广教学
  • 做简历网站智能网站排名优化
  • 网站源码怎么做百度关键词查询排名怎么查
  • 如何制作网站视频软文500字范文
  • 想学做网站报班网络营销做得好的公司
  • 系统的网站建设教程潍坊seo招聘
  • 网站群内容管理系统电脑培训学校
  • 网站建设 创新seo服务外包客服
  • 建网站做seo口碑营销的概念是什么
  • 专业的网站建设电话营业推广策略
  • 做网站需要提供什么条件有什么平台可以推广
  • 莱西做网站北京营销网站制作
  • 开发系统网站建设有没有推广app的平台
  • 贵州安顺做公司网站2022好用值得推荐的搜索引擎