A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 董改名 高级黑马   /  2016-5-26 11:45  /  260 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我按照教程上,写的,发现可以编译,但无法输出
  1. //线程间通信,存资源和取资源
  2. class Resource {        //资源
  3.         private String a;
  4.         private String b;
  5.         private boolean flag = false;

  6.         public synchronized void setS(String s1,String s2) {
  7.                 if(flag) {
  8.                         try {wait();}catch(Exception e) {}

  9.                         this.a = s1;
  10.                         this.b = s2;

  11.                         flag = true;
  12.                         notify();
  13.                 }
  14.         }

  15.         public synchronized void getS() {
  16.                 if(!flag) {
  17.                         try {wait();}catch(Exception e) {}

  18.                         System.out.println(a + " love " + b);

  19.                         flag = false;
  20.                         notify();
  21.                 }
  22.         }
  23. }

  24. class Input implements Runnable {        //存资源线程
  25.         private Resource r;
  26.         Input(Resource r) {
  27.                 this.r = r;
  28.         }

  29.         public void run() {
  30.                 int i = 0;
  31.                 while(true) {
  32.                        
  33.                         if(i == 0) {
  34.                                 r.setS("abc","cba");
  35.                         }else {
  36.                                 r.setS("cba","abc");
  37.                         }
  38.                         i = (i + 1) % 2;
  39.                 }
  40.         }
  41. }

  42. class Output implements Runnable {        //取资源线程
  43.         private Resource r;
  44.         Output(Resource r) {
  45.                 this.r = r;
  46.         }

  47.         public void run() {
  48.                 while(true) {
  49.                         r.getS();
  50.                 }
  51.         }
  52. }

  53. class ThreadCommunication {
  54.         public static void main(String[] args) {
  55.                 Resource r = new Resource();
  56.                 new Thread(new Input(r)).start();        //开启存资源线程
  57.                 new Thread(new Output(r)).start();        //开启取资源线程
  58.         }
  59. }
复制代码



1 个回复

倒序浏览
好牛逼的样子,哈哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马