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

旅游网站开题报告黄石港区建设局网站

旅游网站开题报告,黄石港区建设局网站,如何本地搭建wordpress,wordpress 改变滑页协作基础#xff08;wait/notify#xff09; Java的根父类是Object#xff0c;Java在Object类而非Thread类中#xff0c;定义了一些线程协作的基本方法#xff0c;使得每个对象都可以调用这些方法#xff0c;这些方法有两类#xff0c;一类是wait#xff0c;另一类是no…协作基础wait/notify Java的根父类是ObjectJava在Object类而非Thread类中定义了一些线程协作的基本方法使得每个对象都可以调用这些方法这些方法有两类一类是wait另一类是notify。 wait方法主要有两个 public final void wait() throws InterruptedException public final native void wait(long timeout) throws InterruptedException; 一个带时间参数单位是毫秒表示最多等待这么长时间参数为0表示无限期等待。一个不带时间参数表示无限期等待实际就是调用wait(0)。在等待期间都可以被中断如果被中断会抛出InterruptedException。 wait实际上做了什么呢每个对象都有一把锁和一个锁等待队列一个线程在进入synchronized代码块时会尝试获取锁获取不到的话会把当前线程加入等待队列中。其实除了用于锁的等待队列每个对象还有另一个等待队列表示条件队列该队列用于线程间的协作。调用wait就会把当前线程放到条件队列上并阻塞表示当前线程执行不下去了它需要等待一个条件这个条件它自己改变不了需要其他线程改变。当其他线程改变了条件后应该调用Object的notify方法 public final native void notify(); public final native void notifyAll(); notify做的事情就是从条件队列中选一个线程将其从队列中移除并唤醒notifyAll和notify的区别是它会移除条件队列中所有的线程并全部唤醒。 wait/notify方法只能在synchronized代码块内被调用如果调用wait/notify方法时当前线程没有持有对象锁会抛出异常java.lang.IllegalMonitorStateException。 wait的具体过程是 把当前线程放入条件等待队列释放对象锁阻塞等待线程状态变为WAITING或TIMED_WAITING等待时间到或被其他线程调用notify/notifyAll从条件队列中移除这时要重新竞争对象锁 如果能够获得锁线程状态变为RUNNABLE并从wait调用中返回否则该线程加入对象锁等待队列线程状态变为BLOCKED只有在获得锁后才会从wait调用中返回线程从wait调用中返回后不代表其等待的条件就一定成立了它需要重新检查其等待的条件一般的调用模式是 synchronized (obj) {while (条件不成立)obj.wait();... // 条件满足后的操作 }   生产者/消费者模式 下面来看一个生产者和消费者的例子 /*** author 沉默哥* */ public class MyProducerConsumerDemo {static class GoodsQueue {private int size;private QueueString que new ArrayDequeString();public GoodsQueue(int size) {// 维护一个有界队列传入队列的最大容量super();this.size size;}public synchronized void put(String e) throws InterruptedException {while (que.size() size) {System.out.println(队列已满生产者等待);wait();}que.add(e);System.out.println(生产者生产 e);notify();}public synchronized String take() throws InterruptedException {while (que.size() 0) {System.out.println(队列为空消费者等待);wait();}String e que.poll();System.out.println(消费者消费 e);notify();return e;}}static class Producer extends Thread {GoodsQueue que;Random rad new Random();public Producer(GoodsQueue que) {super();this.que que;}Overridepublic void run() {int i 0;try {while (true) {String e String.valueOf(i);que.put(e);i;Thread.sleep(rad.nextInt(1000));// 生产者休息准备下一次生产}} catch (InterruptedException e1) {}}}static class Consumer extends Thread {GoodsQueue que;Random rad new Random();public Consumer(GoodsQueue que) {super();this.que que;}Overridepublic void run() {try {while (true) {que.take();Thread.sleep(rad.nextInt(1000));// 消费者休息准备下一次消费}} catch (InterruptedException e) {}}}public static void main(String[] args) throws InterruptedException {GoodsQueue que new GoodsQueue(1);Producer pro new Producer(que);Consumer con new Consumer(que);con.start();Thread.sleep(500);pro.start();} }    转载于:https://www.cnblogs.com/JackPn/p/9426366.html
http://www.zqtcl.cn/news/142298/

相关文章:

  • 在vs中做网站如何连接数据库wordpress模板如何安装教程
  • 10g空间网站做视频网站手机网站搜索
  • 服务器上面建设网站网站为什么显示正在建设中
  • 德阳网站优化网络顾问
  • 大淘客可以做几个网站hm网上商城
  • 网站建设分配人员方案呼市网站制作招聘
  • 电商网站建设方案100例用什么做php网站
  • 网站开发设计课程教案南宁网站建设招聘
  • 常州微信网站建设wordpress 中英主题
  • 新零售型网站开发网络营销常用的工具和方法
  • 陕西省建设监理协会网站证书网站建设去哪里找客户
  • 上海网站注销吗如何在wordpress上调用百度地图
  • 网站设计与开发实例网站semseo先做哪个
  • 一个网站做3个关键词够找人建设一个网站多少钱
  • 网站群软件阿里云虚拟主机wordpress
  • 自己做个网站要多少钱温州网站开发平台
  • 北京鑫创网站建设找个网站你知道的
  • 做网站找客户电子商务网站开发与管理
  • 宝安高端网站设计怎么样qq钓鱼网站怎么制作
  • 学习教建网站公众号小程序怎么注销
  • 网站建设或网站优化排名做建筑设计网站
  • 外贸seo外贸推广外贸网站建设外贸网站建设用图片设置网站首页
  • 网站模板安装出入成都通知今天
  • wordpress网站 添加微信网站设计O2O平台佛山总代理
  • 广州网站开发定制方案网站建设应该考虑哪些方面
  • 在线网站建设培训门户类网站图片
  • 佛山乐从网站建设自媒体平台收益排行榜
  • 网站建设项目需求陕西陕煤建设集团有限公司网站
  • 鼓楼网站开发永州做网站tuantaogou
  • ui网站建设站评价文山建设5G网站