写两个线程,一个线程打印 1~52,另一个线程打印字母A-Z。

打印顺序为12A34B56C78D……5152Z。要求用线程间的通信。

代码清单:

class Printer {
private int index = 1;
  /* 打印数字*/
public synchronized void print(int i) {
while (index % 3 == 0) {
try {
wait();
} catch (Exception e) {
}
}
System.out.print(i);
index++;
notifyAll();
}   /* 打印字母*/
public synchronized void print(char c) {
while (index % 3 != 0) {
try {
wait();
} catch (Exception e) {
}
}
System.out.print(c);
index++;
notifyAll();
}
} class NOPrinter implements Runnable {
private Printer p; NOPrinter(Printer p) {
this.p = p;
} public void run() {
for (int i = 1; i <= 52; i++) {
p.print(i);
}
}
} class LetterPrinter implements Runnable {
private Printer p; LetterPrinter(Printer p) {
this.p = p;
} public void run() {
for (char c = 'A'; c <= 'Z'; c++) {
p.print(c);
}
}
} public class ResourceDemo {
public static void main(String[] args) {
Printer p = new Printer();
NOPrinter np = new NOPrinter(p);
LetterPrinter lp = new LetterPrinter(p); Thread th1 = new Thread(np);
Thread th2 = new Thread(lp);
th1.start();
th2.start();
}
}

java常见面试题3:线程间通信的更多相关文章

  1. java常见面试题及答案

    java常见面试题及答案 来源 https://blog.csdn.net/hsk256/article/details/49052293 来源 https://blog.csdn.net/hsk25 ...

  2. 【转载】JAVA常见面试题及解答(精华)

     JAVA常见面试题及解答(精华)       1)transient和volatile是java关键字吗?(瞬联) 如果用transient声明一个实例变量,当对象存储时,它的值不需要维持.例如: ...

  3. java常见面试题及答案 1-10(基础篇)

    java常见面试题及答案 1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被 ...

  4. Java 常见面试题(一)

    1)什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件.Java被设 ...

  5. JAVA常见面试题问题简述(持续更新中)

    JAVA常见面试题问题简述 1. springcloud和dubbo的区别 ①相比之下springcloud 的社区会更加活跃,解决问题的速度也会越来越快,dubbo相对来说如果碰到没有解决的问题,就 ...

  6. java常见面试题及答案 11-20(JVM篇)

    11.JVM内存分哪几个区,每个区的作用是什么? Java虚拟机主要分为以下一个区: 方法区:1. 有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生GC,在这里进行的GC主要是对方法区 ...

  7. java常见面试题及答案 11-20(JVM)

    11.JVM内存分哪几个区,每个区的作用是什么? Java虚拟机主要分为以下一个区: 方法区:1. 有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生GC,在这里进行的GC主要是对方法区 ...

  8. Java常见面试题总结

    一.Java基础 1.String类为什么是final的. 2.HashMap的源码,实现原理,底层结构. 3.说说你知道的几个Java集合类:list.set.queue.map实现类咯... 4. ...

  9. 0038 Java学习笔记-多线程-传统线程间通信、Condition、阻塞队列、《疯狂Java讲义 第三版》进程间通信示例代码存在的一个问题

    调用同步锁的wait().notify().notifyAll()进行线程通信 看这个经典的存取款问题,要求两个线程存款,两个线程取款,账户里有余额的时候只能取款,没余额的时候只能存款,存取款金额相同 ...

随机推荐

  1. 读js DOM编程艺术总结

    第一章主要介绍一些历史性问题,javascript是Netcape和sun公司合作开发的. 第二章JavaScript语法: 1,数据类型:(弱类型)字符串,数值,布尔值(只有true和false,不 ...

  2. vuepress & package.json lock version

    vuepress & package.json lock version npm 锁版 bug npm lock version holy shit { "name": & ...

  3. 2016 JS 笔试题汇总:

    1 1 1 CS&S(中软国际): 1 JavaScript 循环表达式: 2  JavaScript表达式boolean返回值: 3 网页中的事件/HTML 事件属性/JavaScript ...

  4. 最新 Apple iPhone 12 价格 All In One

    最新 Apple iPhone 12 价格 All In One 美版价格 Apple iPhone 12 mini $699 Apple iPhone 12 $799 Apple iPhone 12 ...

  5. vue-parent-child-lifecycle-order

    vue-parent-child-lifecycle-order vue parent child lifecycle order live demo https://99kyx.csb.app/ h ...

  6. Web 全栈开发 MySQL 面试题

    Web 全栈开发 MySQL 面试题 MySQL MySQL 读写分离 读写分离原理 MySQL的主从复制和MySQL的读写分离两者有着紧密联系,首先部署主从复制,只有主从复制完了,才能在此基础上进行 ...

  7. PPT & order & animation

    PPT & order & animation powerpoint order of appearance https://support.office.com/en-us/arti ...

  8. css useful skills blogs

    css useful skills blogs https://caniuse.com/ https://css-tricks.com https://css-tricks.com/almanac/p ...

  9. nodejs package.json中的exports

    test/package.json { "name": "test", "main": "index.js", &quo ...

  10. nodejs 显示进度条插件

    ora 显示loading.. progress 进度条 progress var ProgressBar = require("progress"); var bar = new ...