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

温州建设工程招聘信息网站一个域名访问不同的网站

温州建设工程招聘信息网站,一个域名访问不同的网站,微信 网站 收费,企业网站建设教学更多内容请点击了解 本篇文章将详细讲述wait和notify的区别#xff0c;请往下看 目录 更多内容请点击了解 文章目录 一、wait和notify概念 二、wait()方法详解 三、notify()方法详解 代码如下#xff1a; 3.1notifyAll()详解 四、wait和sleep的对比 一、wait和notif…更多内容请点击了解 本篇文章将详细讲述wait和notify的区别请往下看 目录 更多内容请点击了解 文章目录 一、wait和notify概念 二、wait()方法详解 三、notify()方法详解 代码如下 3.1notifyAll()详解 四、wait和sleep的对比 一、wait和notify概念 由于线程之间是抢占式执行的, 因此线程之间执行的先后顺序难以预知但是实际开发中有时候我们希望合理的协调多个线程之间的执行先后顺序 wait让当前线程进入等待状态 notify唤醒在当前对象上等待的线程 注意: wait, notify, notifyAll 都是 Object 类的方法. wait和notify一定要搭配synchronized来使用没有synchronized会抛出异常 举个例子 一群滑稽老铁准备去ATM取钱一号老铁要取钱进去之后发现ATM没钱了那么他出来了一直等到ATM里面有钱再进去那么接下来几号老铁进去拿钱就是随机的不确定的为了解决这个情况可以使用wait和notify来解决。 二、wait()方法详解 wait做的事情 使当前执行代码的线程进行等待. (把线程放到等待队列中)释放当前的锁满足一定条件时被唤醒, 重新尝试获取这个锁.wait 结束等待的条件: 其他线程调用该对象的 notify 方法wait 等待时间超时 (wait 方法提供一个带有 timeout 参数的版本, 来指定等待时间)其他线程调用该等待线程的 interrupted 方法, 导致 wait 抛出 InterruptedException 异常代码如下 public class waitDemo {public static void main(String[] args) throws InterruptedException {Object object new Object();synchronized (object) {System.out.println(等待中);object.wait();System.out.println(等待结束);}} } 可以发现程序一直在运行没有停止就说明一直在wait这样在执行到object.wait()之后就一直等待下去那么程序肯定不能一直这么等待下去了。这个时候就需要使用到了另外一个方法唤醒的方法notify() wait还提供了一个带有参数的方法参数指定的是最大等待时间不带参数的wait就是死等带参数的wait就会等最大时间之后还没人通知就自己唤醒自己。 使用wait阻塞等待会让线程进入WAITING状态 三、notify()方法详解 notify 方法是唤醒等待的线程 方法notify()也要在同步方法或同步块中调用该方法是用来通知那些可能等待该对象的对象锁的其它线程对其发出通知notify并使它们重新获取该对象的对象锁。如果有多个线程等待则有线程调度器随机挑选出一个呈 wait 状态的线程。(并没有 先来后到)在notify()方法后当前线程不会马上释放该对象锁要等到执行notify()方法的线程将程序执行完也就是退出同步代码块之后才会释放对象锁。代码如下 public class ThreadDemo {public static void main(String[] args) throws InterruptedException {Object locker new Object();Thread t1 new Thread(() - {try {System.out.println(wait 开始);synchronized (locker) {locker.wait();}System.out.println(wait 结束);} catch (InterruptedException e) {e.printStackTrace();}});t1.start();Thread.sleep(1000);Thread t2 new Thread(() - {synchronized (locker) {System.out.println(notify 开始);locker.notify();System.out.println(notify 结束);}});t2.start();} } t1先执行执行到wait就阻塞了1s后t2开始执行执行到notify就会通知t1线程唤醒注意notify是在synchronized内部就需要t2释放了锁t1才能继续往下走加锁的是同一个locker  3.1notifyAll()详解 notify方法只是唤醒某一个等待线程. 使用notifyAll方法可以一次唤醒所有的等待线程 可以有多个线程等待同一个对象唤醒之后这三个线程就会重新竞争锁然后依次执行 public class ThreadDemo {public static void main(String[] args) throws InterruptedException {Object locker new Object();Thread t1 new Thread(() - {try {System.out.println(wait 开始);synchronized (locker) {locker.wait();}System.out.println(wait 结束);} catch (InterruptedException e) {e.printStackTrace();}});t1.start();Thread t3 new Thread(() - {try {System.out.println(wait3 开始);synchronized (locker) {locker.wait();}System.out.println(wait3 结束);} catch (InterruptedException e) {e.printStackTrace();}});t3.start();Thread.sleep(1000);Thread t2 new Thread(() - {synchronized (locker) {System.out.println(notify 开始);locker.notifyAll();System.out.println(notify 结束);}});t2.start();} } 可见唤醒全部线程全部执行完毕 四、wait和sleep的对比 wait有一个带参数的版本用来体现超时时间就感觉和sleep差不多。 他俩最大的区别就是在于初心不同wait解决的是线程之间的顺序控制sleep单纯是让线程休眠一会另外wait需要搭配锁使用sleep不用
http://www.tj-hxxt.cn/news/137396.html

相关文章:

  • 物流网站的建设论文学生网站建设的心得
  • 做网站美工工资多少wordpress如何看访问
  • 三河网站seo手工活外发一手货源
  • seo查询 站长工具章丘哪里做网站
  • 备案网查询seo怎么做优化方案
  • 高端网站建设公司兴田德润可以不现在创业什么行业最好
  • 做红酒网站h5制作素材
  • 网站建设完工后在什么科目核算微信公众号功能模块
  • 浙江宝业建设集团网站灯光照明网站建设
  • 专业电商网站开发小白建设论坛网站
  • 做网站百度关键排名工信和信息化网站备案系统
  • 网站建设的市场需求关键词在线挖掘网站
  • 怎样做网站制作团队做公司网站需要几天
  • 长安网站建设定制注册工程公司名称大全
  • 合肥企业网站建设辽宁建设工程信息网中标结果公示几天
  • 学做网站网涂料网站建设
  • skype在网站上怎么做链接网站设计报价方案
  • 传奇官方网站唐山网站建设开发设计公司
  • 重庆便宜网站建设网站备案帐号找回密码
  • 网站的点击率网站图片移动怎么做
  • 企业手机网站建聊天软件是怎么开发的
  • 免费建一个自己的网站青州网站网站建设
  • 视频解析网站建设购买网站域名
  • 企业网站建设的原则是中国企业公示信息网
  • 国外比较有名的设计工作室网站东莞已出现病例
  • wordpress 仿站最新的网站建设软件
  • Wordpress源码下载站主题资源网站建设反思
  • 怎么看网站是否织梦wordpress底部栏如何编辑
  • 电子商务 网站开发流量很大的网站
  • 手机网站是用什么开发的设计网站专业