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

网站规划具体内容郑州百度推广开户

网站规划具体内容,郑州百度推广开户,温州网蚁网络科技有限公司,手机下载网页上的视频现有函数 printNumber 可以用一个整数参数调用,并输出该整数到控制台。 例如,调用 printNumber(7) 将会输出 7 到控制台。 给你类 ZeroEvenOdd 的一个实例,该类中有三个函数:zero、even 和 odd 。ZeroEvenOdd 的相同实例将会传递…

现有函数 printNumber 可以用一个整数参数调用,并输出该整数到控制台。

  • 例如,调用 printNumber(7) 将会输出 7 到控制台。

给你类 ZeroEvenOdd 的一个实例,该类中有三个函数:zeroeven 和 odd 。ZeroEvenOdd 的相同实例将会传递给三个不同线程:

  • 线程 A:调用 zero() ,只输出 0
  • 线程 B:调用 even() ,只输出偶数
  • 线程 C:调用 odd() ,只输出奇数

修改给出的类,以输出序列 "010203040506..." ,其中序列的长度必须为 2n 。

实现 ZeroEvenOdd 类:

  • ZeroEvenOdd(int n) 用数字 n 初始化对象,表示需要输出的数。
  • void zero(printNumber) 调用 printNumber 以输出一个 0 。
  • void even(printNumber) 调用printNumber 以输出偶数。
  • void odd(printNumber) 调用 printNumber 以输出奇数。

示例 1:

输入:n = 2
输出:"0102"
解释:三条线程异步执行,其中一个调用 zero(),另一个线程调用 even(),最后一个线程调用odd()。正确的输出为 "0102"。

示例 2:

输入:n = 5
输出:"0102030405"

1. Semaphore

class ZeroEvenOdd {private int n;private Semaphore zeroSema = new Semaphore(1);private Semaphore oddSema = new Semaphore(0);//奇数private Semaphore evenSema = new Semaphore(0);//偶数public ZeroEvenOdd(int n) {this.n = n;}public void zero(IntConsumer printNumber) throws InterruptedException {for (int i = 1; i <= n; i++) {zeroSema.acquire();printNumber.accept(0);if (i % 2!= 0) {//奇数oddSema.release();} else {evenSema.release();}}}public void even(IntConsumer printNumber) throws InterruptedException {for (int i = 1; i <= n; i++) {if (i % 2== 0) {//偶数 打印偶数 并释放zero的线程evenSema.acquire();printNumber.accept(i);zeroSema.release();}}}public void odd(IntConsumer printNumber) throws InterruptedException {for (int i = 1; i <= n; i++) {if (i % 2 != 0) {//奇数,打印奇数,并释放zero的线程oddSema.acquire();printNumber.accept(i);zeroSema.release();}}}
}

2. synchronized

class ZeroEvenOdd {private int n;private final Object ob=new Object();private volatile int flag=0;public ZeroEvenOdd(int n) {this.n = n;}public void zero(IntConsumer printNumber) throws InterruptedException {for (int i = 1; i <= n; i++) {synchronized (ob){while (flag!=0){ob.wait();}printNumber.accept(0);if(i%2==0)flag=2;elseflag=1;ob.notifyAll();}}}public void even(IntConsumer printNumber) throws InterruptedException {for (int i = 1; i <= n; i++) {if (i % 2== 0) {//偶数 打印偶数 并释放zero的线程synchronized (ob){while (flag!=2){ob.wait();}printNumber.accept(i);flag=0;ob.notifyAll();}}}}public void odd(IntConsumer printNumber) throws InterruptedException {for (int i = 1; i <= n; i++) {if (i % 2!= 0) {//偶数 打印偶数 并释放zero的线程synchronized (ob){while (flag!=1){ob.wait();}printNumber.accept(i);flag=0;ob.notifyAll();}}}}
}

3. CountDownLatch

class ZeroEvenOdd {private int n;private CountDownLatch countDownLatch_zero=new CountDownLatch(0);private CountDownLatch countDownLatch_even=new CountDownLatch(1);private CountDownLatch countDownLatch_odd=new CountDownLatch(1);public ZeroEvenOdd(int n) {this.n = n;}public void zero(IntConsumer printNumber) throws InterruptedException {for (int i = 1; i <= n; i++) {countDownLatch_zero.await();printNumber.accept(0);countDownLatch_zero=new CountDownLatch(1);if (i % 2!= 0) {//奇数countDownLatch_odd.countDown();} else {countDownLatch_even.countDown();}}}public void even(IntConsumer printNumber) throws InterruptedException {for (int i = 1; i <= n; i++) {if (i % 2== 0) {//偶数 打印偶数 并释放zero的线程countDownLatch_even.await();printNumber.accept(i);countDownLatch_even=new CountDownLatch(1);countDownLatch_zero.countDown();}}}public void odd(IntConsumer printNumber) throws InterruptedException {for (int i = 1; i <= n; i++) {if (i % 2 != 0) {//奇数,打印奇数,并释放zero的线程countDownLatch_odd.await();printNumber.accept(i);countDownLatch_odd=new CountDownLatch(1);countDownLatch_zero.countDown();}}}
}

4. Lock

class ZeroEvenOdd {private int n;private volatile int flag=0;Lock lock=new ReentrantLock();Condition condition_zero = lock.newCondition();Condition conditon_even = lock.newCondition();Condition condition_odd = lock.newCondition();public ZeroEvenOdd(int n) {this.n = n;}public void zero(IntConsumer printNumber) throws InterruptedException {for (int i = 1; i <= n; i++) {lock.lock();try{while (flag!=0){condition_zero.await();}printNumber.accept(0);if(i%2==0) {flag = 2;conditon_even.signal();}else {flag = 1;condition_odd.signal();}}finally {lock.unlock();}}}public void even(IntConsumer printNumber) throws InterruptedException {for (int i = 1; i <= n; i++) {if (i % 2== 0) {//偶数 打印偶数 并释放zero的线程lock.lock();try {while (flag != 2) {conditon_even.await();}printNumber.accept(i);flag = 0;condition_zero.signal();}finally {lock.unlock();}}}}public void odd(IntConsumer printNumber) throws InterruptedException {for (int i = 1; i <= n; i++) {if (i % 2!= 0) {//偶数 打印偶数 并释放zero的线程lock.lock();try {while (flag != 1) {condition_odd.await();}printNumber.accept(i);flag = 0;condition_zero.signal();}finally {lock.unlock();}}}}
}

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

相关文章:

  • 学校网站注重服务平台建设高端网站设计公司新鸿儒
  • 在民办医院做网站编辑怎么样江苏 网站 备案
  • 做电商哪几个设计网站比较好免费网站商城模板
  • 乐云seo可视化网站建设专业网站建设代理
  • 合肥市建设网站网站页面设计主要包括
  • 网站构成要素西安网站制作定制
  • 网站文件怎么做筑龙网官网
  • 网站做的比较好的贸易公司好的空间网站
  • 种植园网站模板邢台网站建设哪家公司好
  • 企业网站建设开发多少钱做网站平面模板是啥意思
  • 体育西网站开发设计搜索引擎找不到的网站
  • 网页建站点郑州好的网站建设公司哪家好
  • 阿联酋网站后缀wordpress伪静态卡死
  • 深圳专门做兼职的网站平台维护工作内容
  • 綦江网站建设公司宽屏网站尺寸
  • wordpress文章的使用营销网站优化推广
  • 怎样做相亲网站微信公众号可以做几个微网站吗
  • seo排名工具站长如何建立属于自己的网址
  • 医疗网站建设资讯中国工业互联网公司排名
  • 如何建设废品网站电子商务网站建站
  • 好的网站有哪些icp备案证书号查询
  • 网游网站开发seo网站的优化流程
  • 衡水网站建立要多少钱微信公众号网页版入口
  • o2o网站建设技术上海电子网站建设
  • 连云港做网站制作首选公司关键词搜索挖掘爱网站
  • 建站网站图片不显示西安公司章程在哪里下载
  • 校园网站开发方案商业计划的网站建设费用
  • iis找出网站死循环软件公司都是干什么的
  • 苏州网站建设流程营销型单页面网站制作
  • 建设教育协会官方网站php购物网站开发uml图