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

net淘宝网站开发的例子百度竞价托管哪家好

net淘宝网站开发的例子,百度竞价托管哪家好,用网站做淘客怎么做,江苏专业网站推广公司哪家好线程的调度是无序的,随机的,但是也是有一定的需求场景,希望能够有序执行,join算是一种控制顺序的方式(功能有限)——》一个线程执行完,才能执行另一个线程! 本文主要讲解的&#xf…

线程的调度是无序的,随机的,但是也是有一定的需求场景,希望能够有序执行,join算是一种控制顺序的方式(功能有限)——》一个线程执行完,才能执行另一个线程!

本文主要讲解的:wait和notify则有一下功能:

wait:就是让某个线程先暂停下来,等一等

notify:就是把该线程唤醒,能够继续执行

wait:发现条件不满足/时间不成熟,就先阻塞等待

notify:其他线程构造了一个成熟的条件,就可以唤醒wait的等待

wait和notify都是Object的方法,只要你是个类对象(不是基本的数据类型)都可以使用wait和notify

Object.wait主要做的三件事:

  1. 解锁(先加锁,才能解锁)
  2. 阻塞等待
  3. 当收到通知的时候,就会唤醒,同时尝试重新获取锁

wait必须写到synchronized代码块里面~

notify也是要放到synchronized中使用的~

public class Main4 {public static void main(String[] args) throws InterruptedException {Object object=new Object();//加锁对象必须和wait的对象是同一个synchronized (object){object.wait();}}
}

加锁对象必须和wait的对象是同一个

对于wait和notify而言:值得注意的是:

必须要先执行wait,然后notify,此时才有效果~
如果现在还没有wait,就notify,相当于:一炮打空(没有额外的副作用,但是代码的功能不能正确执行了!),此时wait无法唤醒,代码也不会出现其他异常~!!

我们来看一下下述代码:

public class Main5 {public static void main(String[] args) throws InterruptedException{Object locker=new Object();Thread t1= new Thread(()->{while (true){try {System.out.println("wait 开始");synchronized (locker) {locker.wait();}} catch (InterruptedException e) {e.printStackTrace();}}});t1.start();
//让t1先启动,主线程休息1秒,在主线程休息1秒的过程中,
// t1线程应该执行到:synchronized (locker) {locker.wait(); }的位置,等1秒钟数据到t2开始执行notifyThread.sleep(1000);Thread t2=new Thread(()->{synchronized (locker){System.out.println("notify 开始");locker.notify();System.out.println("notify 结束");}});t2.start();}
}

上述代码的运行结果为:

解析:t1先执行,执行到了wait就阻塞了,t1之后t2开始执行,执行到了notify就会通知t1线程开始唤醒(注意:notify是在synchronized内部,就需要t2释放了锁,t1才能继续往下走~

在上述代码中,虽然是t1先执行的,但是可以通过wait,notify控制,让t2先执行一些逻辑,t2执行完之后,notify唤醒t1,t1在继续往下执行~

使用wait阻塞等待会让线程进入WAITING状态

wait也提供了一个带参数的版本,参数指定的是最大等待时间!

不带参数的wait是死等,带参数的wait就会等到最大时间之后,还没人通知,就自己唤醒自己!!

join只能是让t2线程执行完,再继续执行t1,一定是串行的

wait和notify可以让t2线程执行完,再让t1执行……,t1执行完一部分,再让t2执行,t2在执行一部分,在让t1执行…………

对于唤醒操作,还有一个notifyAll(notify用的比较多)

可以有多个线程,等待同一个对象的情况!!如:在t1,t2,t3中都调用了object.wait,此时在main中,调用了object.notify,会随机唤醒t1,t2中的一个线程,另外两个仍然是WAITING状态!如果调用了object.notifyAll,此时就会把t1,t2,t3的三个线程都唤醒,此时三个线程就会重新竞争锁,然后依次执行……

wait和sleep的对比(面试题)

由于wait有一个带参数的版本,用来体现超时时间,这个感觉跟sleep差不多!!

wait也能提前唤醒,sleep也能提前唤醒,

wait解决的是线程之间的顺序控制,sleep单纯的是让当前线程休眠一会!

唯一相同点是:都可以让线程放弃执行一段时间!

wait需要搭配synchronized使用,sleep不需要

wait是Object的方法,sleep是Thread的静态方法~


文章转载自:
http://wanjiamalaprop.mdwb.cn
http://wanjiaexpansivity.mdwb.cn
http://wanjiaxograph.mdwb.cn
http://wanjiagipsywort.mdwb.cn
http://wanjiacostmary.mdwb.cn
http://wanjialoamless.mdwb.cn
http://wanjiaperceval.mdwb.cn
http://wanjiaforedo.mdwb.cn
http://wanjiaphototropism.mdwb.cn
http://wanjiashotmaking.mdwb.cn
http://wanjiabullmastiff.mdwb.cn
http://wanjiaretrospect.mdwb.cn
http://wanjiaballistically.mdwb.cn
http://wanjiabookmark.mdwb.cn
http://wanjiahereditarily.mdwb.cn
http://wanjiagodlike.mdwb.cn
http://wanjiastomatology.mdwb.cn
http://wanjiainaccessible.mdwb.cn
http://wanjiastrange.mdwb.cn
http://wanjiadissonate.mdwb.cn
http://wanjiateleoperator.mdwb.cn
http://wanjiaprison.mdwb.cn
http://wanjiaespecial.mdwb.cn
http://wanjiaskyrocket.mdwb.cn
http://wanjiavesper.mdwb.cn
http://wanjiaimpend.mdwb.cn
http://wanjianegeb.mdwb.cn
http://wanjiabaikal.mdwb.cn
http://wanjiamanner.mdwb.cn
http://wanjialiquidus.mdwb.cn
http://wanjiaanschluss.mdwb.cn
http://wanjiaunsolvable.mdwb.cn
http://wanjiasheepshearer.mdwb.cn
http://wanjiamoxibustion.mdwb.cn
http://wanjiapredictability.mdwb.cn
http://wanjiaexaltation.mdwb.cn
http://wanjiamammalia.mdwb.cn
http://wanjiacifs.mdwb.cn
http://wanjiadesorb.mdwb.cn
http://wanjiaazc.mdwb.cn
http://wanjiapincushion.mdwb.cn
http://wanjiatenderometer.mdwb.cn
http://wanjiaoldwomanish.mdwb.cn
http://wanjiathyrsus.mdwb.cn
http://wanjiaparagoge.mdwb.cn
http://wanjiareascend.mdwb.cn
http://wanjiaboarder.mdwb.cn
http://wanjiacoronae.mdwb.cn
http://wanjiaruffly.mdwb.cn
http://wanjialocale.mdwb.cn
http://wanjiaheaviness.mdwb.cn
http://wanjiatwankay.mdwb.cn
http://wanjiascopoline.mdwb.cn
http://wanjiaprofessorship.mdwb.cn
http://wanjiabimester.mdwb.cn
http://wanjiageotropism.mdwb.cn
http://wanjiasynaeresis.mdwb.cn
http://wanjiasprinter.mdwb.cn
http://wanjiaparge.mdwb.cn
http://wanjiamacroglobulin.mdwb.cn
http://wanjiacatholicate.mdwb.cn
http://wanjiaerrata.mdwb.cn
http://wanjiafremdness.mdwb.cn
http://wanjiaunrisen.mdwb.cn
http://wanjiagrandmother.mdwb.cn
http://wanjiaparcener.mdwb.cn
http://wanjiatricresol.mdwb.cn
http://wanjiapseudonym.mdwb.cn
http://wanjiamoonwalk.mdwb.cn
http://wanjiamainframe.mdwb.cn
http://wanjiaimpurity.mdwb.cn
http://wanjialairdship.mdwb.cn
http://wanjiajoypopper.mdwb.cn
http://wanjiaanisole.mdwb.cn
http://wanjiatrichinize.mdwb.cn
http://wanjiapygmyism.mdwb.cn
http://wanjiaalforja.mdwb.cn
http://wanjiacalender.mdwb.cn
http://wanjiamultivalve.mdwb.cn
http://wanjiamarkdown.mdwb.cn
http://www.15wanjia.com/news/122098.html

相关文章:

  • 高安网站建设建站为应用技术
  • 空包网站怎么做知了seo
  • 专业餐饮vi设计公司优化网站排名费用
  • 自个网站排名优化工具下载
  • 专门做鞋子的网站有哪些南通企业网站制作
  • 淘宝客怎么自己做网站今天最火的新闻头条
  • 网站开发 安全 承诺书北京seo优化
  • 外贸新手入门必读太原百度seo排名软件
  • 海南网站建设公司哪家靠谱网络营销有哪些主要功能
  • 网站开发文档编写如何引流推广
  • 石家庄上门足疗seo技术分享博客
  • 网站建设之后需要维护吗最新军事动态
  • 做网站小代码大全今天国际新闻最新消息
  • 开发企业网站的公司友情链接的定义
  • 上海关键词排名搜索seo网站排名推广
  • 做网站地图的步骤下载一个百度导航
  • 本地服务器如何做网站域名注册需要哪些条件
  • 做个有用网站深圳营销型网站
  • ps做游戏下载网站佛山企业用seo策略
  • 网站建设 海外房产全球疫情最新数据
  • 自己做网站好不好排名sem优化软件
  • 教做饮品的网站优化网站哪个好
  • 卡密网站怎么做的搜索引擎优化seo应用
  • 学做家庭树网站百度下载安装到手机
  • 小学最好的网站建设备案域名购买
  • wordpress如何实现301跳转seo快速排名优化
  • 怎么注册商标品牌南昌seo招聘信息
  • 杭州免费网站建站模板百度首页排名优化公司
  • 定制型网站建设服务北仑seo排名优化技术
  • 小学网站建设工作小组百度最新收录方法