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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. /*@线程间通信
  2. *@有两个动作:一个存一个取。对同一资源进行操作,比如银行。
  3. */

  4. class Vault {
  5.         String name;
  6.         String sex;
  7. }

  8. class Input implements Runnable// 录入信息
  9. {
  10.         private Vault r;

  11.         Input(Vault r)// 初始化
  12.         {
  13.                 this.r = r;
  14.         }

  15.         public void run() {
  16.                 int flag = 0;// 标志
  17.                 while (true) {
  18.                         if (flag == 0) {
  19.                                 synchronized (Vault.class) {//加一个锁

  20.                                         r.name = "张三";
  21.                                         r.sex = "男";
  22.                                 }
  23.                         } else {
  24.                                 synchronized (Vault.class) {
  25.                                         r.name = "lisa";
  26.                                         r.sex = "woman";
  27.                                 }
  28.                         }
  29.                         flag = (flag + 1) % 2; // 1或者0之间循环
  30.                 }
  31.         }
  32. }

  33. class Output implements Runnable {// 输出信息

  34.         private Vault r;

  35.         Output(Vault r)// 初始化
  36.         {
  37.                 this.r = r;
  38.         }

  39.         public void run() {
  40.                 while (true)// 打印
  41.                 {
  42.                         synchronized (Vault.class) {//加一个锁,注意要和输入锁是同一个锁
  43.                                 System.out.println(r.name + "--------" + r.sex);
  44.                         }
  45.                 }
  46.         }
  47. }
复制代码


2 个回复

正序浏览
liushuaishuai 发表于 2015-8-11 19:42
整理一下成为java高级工程师的技能(不用都学)新人勿进!

什么鬼,这是灌水的节奏吗?
回复 使用道具 举报
整理一下成为java高级工程师的技能(不用都学)新人勿进!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马