开启两个线程A、B,打印1到10,线程A打印奇数(1、3、5、7、9),线程B打印偶数(2、4、6、8、10)。-笔试面试资料

这是qklbishe.com第5996 篇笔试面试资料
提供答案分析,通过本文《开启两个线程A、B,打印1到10,线程A打印奇数(1、3、5、7、9),线程B打印偶数(2、4、6、8、10)。-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:

开启两个线程A、B,打印1到10,线程A打印奇数(1、3、5、7、9),线程B打印偶数(2、4、6、8、10)。
开启两个线程A、B,打印1到10,线程A打印奇数(1、3、5、7、9),线程B打印偶数(2、4、6、8、10)。 dxzmpk
package com.company.multi_thread.PrintOddEvenWN;  class TaskEvenOdd implements Runnable {     private int max;     private Printer print;     private boolean isEvenNumber;      public TaskEvenOdd(Printer print, int max, boolean isEvenNumber) {         this.max = max;         this.print = print;         this.isEvenNumber = isEvenNumber;     }      // standard constructors      @Override     public void run() {         int number = isEvenNumber ? 2 : 1;         while (number <= max) {             if (isEvenNumber) {                 print.printEven(number);             } else {                 print.printOdd(number);             }             number += 2;         }     }      static class Printer {         private volatile boolean isOdd;          synchronized void printEven(int number) {             while (!isOdd) {                 try {                     wait();                 } catch (InterruptedException e) {                     Thread.currentThread().interrupt();                 }             }             System.out.println(Thread.currentThread().getName() + ":" + number);             isOdd = false;             notify();         }          synchronized void printOdd(int number) {             while (isOdd) {                 try {                     wait();                 } catch (InterruptedException e) {                     Thread.currentThread().interrupt();                 }             }             System.out.println(Thread.currentThread().getName() + ":" + number);             isOdd = true;             notify();         }     }      public static void main(String... args) {         Printer print = new Printer();         Thread t1 = new Thread(new TaskEvenOdd(print, 10, false),"Odd");         Thread t2 = new Thread(new TaskEvenOdd(print, 10, true),"Even");         t1.start();         t2.start();     } }  

2021-01-15 23:04:00 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 开启两个线程A、B,打印1到10,线程A打印奇数(1、3、5、7、9),线程B打印偶数(2、4、6、8、10)。-笔试面试资料

提供最优质的资源集合

立即查看 了解详情