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

wordpress google authenticatorseo外链在线提交工具

wordpress google authenticator,seo外链在线提交工具,网站死链排查,wordpress mysql用户名目录 1. wait()⽅法 2. notify()⽅法 3. notifyAll()⽅法 4. wait 和 sleep 的对⽐#xff08;⾯试题#xff09; 由于线程之间是抢占式执⾏的, 因此线程之间执⾏的先后顺序难以预知. 但是实际开发中有时候我们希望合理的协调多个线程之间的执⾏先后顺序. 完成这个协调⼯… 目录 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()都是用于线程控制的方法但是它们有一些重要的区别。 wait()是Object类中定义的方法而sleep()是Thread类中定义的方法。wait()是在对象级别上进行操作而sleep()是在当前线程级别上进行操作。 wait()方法会释放线程持有的锁使线程进入等待状态直到其他线程调用相同对象上的notify()或notifyAll()方法来唤醒等待的线程。sleep()方法不会释放线程持有的锁。 wait()方法必须在同步上下文中被调用即在同步方法或同步块中否则会抛出IllegalMonitorStateException异常。而sleep()方法可以在任何地方调用。 wait()方法还可以指定一个超时时间在等待超时后会自动唤醒线程。而sleep()方法只能通过interrupt()方法或等待指定时间来唤醒线程。 总的来说wait()方法用于线程间的协调和通信而sleep()方法主要用于线程的休眠。wait()方法在等待期间会释放锁而sleep()方法不会释放锁。
http://www.w-s-a.com/news/523040/

相关文章:

  • 网站建设 自适应国内最近的新闻
  • 校园网站开发背景吴江网站建设公司
  • 网站开发工程师发展趋势山东省建设工程电子信息网站
  • 适合大学生创业的网站建设类型吉林省舒兰市建设银行网站
  • 呼和浩特网站建设哪家好培训学校加盟费用
  • 网站如何做友情链接有道云笔记WordPress
  • 贵阳企业网站建设制作赤峰浩诚网站建设公司
  • asp官方网站微信模板素材
  • wordpress 留言给站长发邮件做百度推广员赚钱吗
  • 北京建站公司做网站价格专门找人做软件的网站
  • 商务网站的特点ui软件界面设计
  • 广州个性化网站开发网站索引量是什么意思
  • 公司网站制作专业公司python做后台网站的多吗
  • 桂林建站平台哪家好给别人做网站怎么收取费用
  • python做网站显示表格用visual做的网站
  • 彩票网站建设需要什么聊城网站建设首选天成网络
  • 安徽建设工程网站wordpress标签云代码
  • 推荐佛山顺德网站建设手机网站建设域名空间
  • 电子商务网站建设策划书例子企业官网用什么cms系统
  • 网站栏目设计怎么写平面设计接单报价表
  • 做网站美工要学什么网站推广的方法包括
  • 哪个网站可以做笔译兼职wordpress加表单
  • 百度站内搜索 wordpress微餐饮建站费用
  • 用什么做网站的访问量统计制作手工作品
  • 微信公众号搭建网站河南卫生基层系统网站建设
  • steam账号注册网站重庆手机版建站系统哪家好
  • 中新生态城建设局门户网站wordpress云盘视频播放
  • 大型网站开发基本流程wordpress记录用户搜索
  • 云服务器安装win系统做网站wordpress边栏扩大尺寸
  • 网站开发面试自我介绍软件下载网站如何建设