java常见面试题3:线程间通信
2013-11-23 14:23
471 查看
写两个线程,一个线程打印 1~52,另一个线程打印字母A-Z。
打印顺序为12A34B56C78D……5152Z。要求用线程间的通信。
代码清单:
打印顺序为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常见面试题2:求出两个正整数的最大公约数
- 黑马程序员-----程序员之路_____基础加强之反射
- 黑马程序员--Java集合框架
- 黑马程序员--Java集合框架
- 《神秘的程序员们》
- 请别再拿“String s = new String("xyz");创建了多少个String实例”来面试了吧
- 读《疯狂的程序员》后感
- 程序员是程序中的临时变量,用完扔掉?
- 技术类面试题(1)
- PHP程序员突破成长瓶颈
- 面试总结
- 程序员需知的10大编程格言
- 黑马程序员——银行业务调度系统
- 黑马程序员——交通灯管理系统
- 黑马程序员-----程序员之路_____正则表达式
- 程序员最美的情人节玫瑰花,JAVA代码实现的3D玫瑰噢
- 我是程序员