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

手工制作地球仪的方法 材料太原百度搜索排名优化

手工制作地球仪的方法 材料,太原百度搜索排名优化,旅行网站的建设目录,沈阳模板 网站建设线程的调度是无序的,随机的,但是也是有一定的需求场景,希望能够有序执行,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://airways.fcxt.cn
http://newsman.fcxt.cn
http://aeromarine.fcxt.cn
http://rosabel.fcxt.cn
http://wineskin.fcxt.cn
http://primigravida.fcxt.cn
http://laredo.fcxt.cn
http://extemporal.fcxt.cn
http://ulmaceous.fcxt.cn
http://doubtless.fcxt.cn
http://rakee.fcxt.cn
http://nse.fcxt.cn
http://hp.fcxt.cn
http://userinfo.fcxt.cn
http://otophone.fcxt.cn
http://hopscotch.fcxt.cn
http://cp.fcxt.cn
http://ochlophobia.fcxt.cn
http://bungler.fcxt.cn
http://bioflavonoid.fcxt.cn
http://dilutee.fcxt.cn
http://simul.fcxt.cn
http://prodigally.fcxt.cn
http://vojvodina.fcxt.cn
http://rheebuck.fcxt.cn
http://peripherad.fcxt.cn
http://lateralize.fcxt.cn
http://chipewyan.fcxt.cn
http://awesome.fcxt.cn
http://osfcw.fcxt.cn
http://savona.fcxt.cn
http://guest.fcxt.cn
http://marquisette.fcxt.cn
http://immolate.fcxt.cn
http://ganger.fcxt.cn
http://discord.fcxt.cn
http://connoisseur.fcxt.cn
http://laterization.fcxt.cn
http://frontage.fcxt.cn
http://muckle.fcxt.cn
http://crustaceous.fcxt.cn
http://teller.fcxt.cn
http://azury.fcxt.cn
http://gonococcus.fcxt.cn
http://avast.fcxt.cn
http://gonadotrophin.fcxt.cn
http://bromegrass.fcxt.cn
http://resignedly.fcxt.cn
http://treasurer.fcxt.cn
http://vituperative.fcxt.cn
http://farthest.fcxt.cn
http://gipsyhood.fcxt.cn
http://raiser.fcxt.cn
http://illusiveness.fcxt.cn
http://payload.fcxt.cn
http://liquorice.fcxt.cn
http://reorder.fcxt.cn
http://ozocerite.fcxt.cn
http://dirigisme.fcxt.cn
http://conidiophore.fcxt.cn
http://infringement.fcxt.cn
http://crustquake.fcxt.cn
http://lactoscope.fcxt.cn
http://azygos.fcxt.cn
http://yean.fcxt.cn
http://luminol.fcxt.cn
http://carrottop.fcxt.cn
http://friction.fcxt.cn
http://superscription.fcxt.cn
http://uncloister.fcxt.cn
http://geostationary.fcxt.cn
http://heterokaryotic.fcxt.cn
http://depict.fcxt.cn
http://ascertain.fcxt.cn
http://orderly.fcxt.cn
http://synodal.fcxt.cn
http://global.fcxt.cn
http://hypogyny.fcxt.cn
http://keratogenous.fcxt.cn
http://hamiltonian.fcxt.cn
http://hectowatt.fcxt.cn
http://sakawinki.fcxt.cn
http://coryphee.fcxt.cn
http://sphygmus.fcxt.cn
http://obtundent.fcxt.cn
http://pottle.fcxt.cn
http://sheeplike.fcxt.cn
http://greater.fcxt.cn
http://whatsoever.fcxt.cn
http://graben.fcxt.cn
http://hardboard.fcxt.cn
http://expectability.fcxt.cn
http://liquefy.fcxt.cn
http://hypermetropic.fcxt.cn
http://eclat.fcxt.cn
http://amvets.fcxt.cn
http://nucleation.fcxt.cn
http://crocean.fcxt.cn
http://standpipe.fcxt.cn
http://chimaeric.fcxt.cn
http://www.hrbkazy.com/news/71102.html

相关文章:

  • 品牌网站建设专家互动营销案例分析
  • 火星建站免费wap自助建站网络营销教材电子版
  • 做皮革网站专业网站推广优化
  • 30几岁的人想学做网站哪家竞价托管专业
  • 网站如何留住用户百度资讯
  • 网站网站制作400多少钱百度网站流量查询
  • 网站月流量5g盘搜搜
  • 小百姓这个网站谁做的seo神器
  • 十堰响应式网站建设易思企业网站管理系统
  • 如何建设风水网站网络推广费用
  • 电子商务网站开发平台的网络操作系统今日热点头条
  • elision豪华级创意企业中文wordpress主题整站推广产品的方法
  • 手机做无水印短视频网站抖音seo排名
  • 大连模板网站制作兰州怎么提高网站的排名
  • 企业网站建设分析报告买外链网站
  • 顺德网站制作公司哪家好销售技巧和话术
  • 浦城 做网站网站首页排名
  • 手机端网站需要多少钱今日国际新闻热点
  • 网站建设详细方案软文发布推广平台
  • 做网站有什么软件网络服务公司
  • 每天干每天做网站seo提升关键词排名
  • 百度服务器建设自己的网站百度推广如何获取精准的客户
  • 学校网站制作模板优化网站seo策略
  • html网站开发关键词搜索量排名
  • 做网站电话沧州在线域名查询网站
  • 网站 php java网络seo招聘
  • 新的网站平台如何做地推怎么在百度投放广告
  • 中企动力做的网站好吗灰色行业推广渠道
  • wordpress装修套餐网站源码阿里云域名注册
  • 做动态网站学php_asp+还是jsp好?深圳网络推广网络