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

网站建设模块化实现wordpress功能最全的免费主题

网站建设模块化实现,wordpress功能最全的免费主题,抓关键词的方法10条,鳌江网站建设目录 1.wait()方法 2. notify方法 因为线程之间是抢占式执行的,所以线程之间执行的先后顺序难以预知。但是实际开发中,我们希望线程之间的执行顺序是能被掌控的,比如线程2开始之前,需要线程1的某个任务先被执行。也就是说,很多时…

目录

1.wait()方法

2. notify方法


因为线程之间是抢占式执行的,所以线程之间执行的先后顺序难以预知。但是实际开发中,我们希望线程之间的执行顺序是能被掌控的,比如线程2开始之前,需要线程1的某个任务先被执行。也就是说,很多时候,我们需要线程之间能协调工作,这就主要涉及到以下三个方法(均为Object类的方法):

  • wait():让当前线程进行等待状态
  • notify():唤醒在当前状态上等待的线程(只能唤醒一个等待该对象的对象锁的线程)
  • notifyAll():唤醒在当前状态上等待的线程(能唤醒所有等待该对象的对象锁的线程)

1.wait()方法

wait方法的作用是使当前线程进入阻塞等待.

当代码执行到wait()方法时,线程会经过以下过程:

  1. 当前线程释放锁.
  2. 使当前执行代码的线程进行等待(把线程放到等待队列中).
  3. 满足一定条件时线程被唤醒,重新尝试获取这个锁.

注意:wait()必须要和synchronized一起使用.因为wait()方法一执行就要先释放锁,所以wait必须要放到synchronized中使用.且synchronized锁的对象是和调用wait方法的对象是同一个对象.

wait使用示例:

运行这段代码:

 发现代码就停在这里了,这时我们需要使用另外一个唤醒的方法notify().让其能继续进行下去.

wait 结束等待的条件:

  1. 其他线程调用该对象的notify方法
  2. 其他线程调用该等待线程的interrupted方法,导致wait抛出InterruptedException异常
  3. wait等待的时间超时(wait方法重载了一个带有timeout参数的方法,来指定等待时间)

2. notify方法

notify方法的作用是唤醒等待的线程.

方法notify()要在同步方法或同步方法块中调用,该方法是用来通知那些正在等待该对象的对象锁的其他线程,对其发出通知notify,并使他们重新获取该对象的对象锁.

如果有多个线程都在等待,则线程调度器会随机挑选出一个呈wait状态的线程,没有先来后到这一说.

在notify方法后,当前线程不会马上释放该对象锁,要等到执行notify()方法的线程将程序执行完,也就是退出同步代码块之后才会释放对象锁.

使用notify方法唤醒线程:

分析以上代码,线程t1执行到locker.wait()时释放锁,阻塞等待;t2线程拿到锁,执行到locker.notify()时,将t1线程唤醒,但是此时t2线程还不会先将锁释放,会先将同步代码块执行完才会释放锁,之后t1线程再次开始执行.运行结果如下:

wait和notify方法要搭配使用,比如实现一个场景:线程1与线程2并发执行,线程1执行到某一条件时需要拿到线程2的结果才能继续往下执行,这时就可以用wait方法使其进入等待,当线程2将结果计算出来后,可用notify方法将等待该对象的对象锁的某一线程唤醒,使其重新拿到锁,继续执行.

notifyAll()方法:

notify方法只是唤醒一个线程,而notifyAll()方法可以一次唤醒所有的等待线程,比如有3个线程都在等待该对象的对象锁,那么notifyAll()方法可将这3个线程全部唤醒,但是这3个线程仍需要竞争这一把锁.

wait VS sleep

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

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

二者其实没有任何可比性而言.wait是用于线程之间的通信的,而sleep是让线程阻塞一段时间的.唯一的相同点就是都可以让线程停止执行一段时间.

 

http://www.yayakq.cn/news/750120/

相关文章:

  • 常用网站后缀网站类型分类
  • 哪个网站diy做宝宝衣服wordpress物体替换纹理
  • 城乡建设杂志社官方网站有域名怎么建网站
  • 关于水果的网站开发网络服务部工作计划
  • 网站网页制作模板网站图片地址怎么做
  • 做网站如何使用特殊字体济南建设企业网站
  • 宿州做企业网站公司安卓版下载app
  • 新房网站建设公司网站打开是404错误
  • 天津企业网站模板建站哪家好电子商务网站平台建设策划
  • 专业刷粉网站应该选用优质的个人护理
  • 济南建网站价格wordpress 数据库 地址
  • 保定做网站设计可以做效果图的网站
  • 龙岩网站建设方案优化wordpress的搭建教程 pdf
  • 安丘网站建设多少钱盐城企业建设网站
  • 网站的footer怎么做网页后端开发需要学什么
  • 网站建设完工报告自己做淘客网站成本大吗
  • 北京网站seo策划莞城注册能源公司网上注册流程
  • 网站优化首页付款西宁建设网站
  • 京东商城网站建设西安住房城市建设局官网
  • 深圳网站设计公司电话南宁手机网站建设公司
  • 个人网站在那建设教务管理网站开发
  • 网站建设课程学习做杂志的网站有哪些内容
  • 苏州全网网站建设合肥有多少做网站的
  • html5手机app网站模板免费下载网站app用什么语言开发的
  • 石景山重庆网站建设亚马逊跨境电商开店赚钱吗
  • 手机网站页面如何制作软件赣州seo优化
  • 网站的后台怎么做的吉林省建设信息网站
  • 网站开发 绩效考核可视化网页制作工具
  • PHP+MySQL网站开发全程实例中信建设有限责任公司资质
  • 网站建设的要点网站开发外包平台