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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yangfengxiao 中级黑马   /  2012-9-30 18:43  /  1407 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 yangfengxiao 于 2012-9-30 21:01 编辑

//需求:两个储户,去同一个银行,存钱,每人存三次,每次100元。
class Bank {
private int sum;
public synchronized void add(int num) {
  sum = sum + num;
  try {
   Thread.sleep(10);
  } catch (InterruptedException e) {
   e.printStackTrace();
  }
  System.out.println("sum=" + sum);
}
}
class Cus implements Runnable {
private Bank b = new Bank();
public void run() {
  for (int x = 0; x < 3; x++) {
   b.add(100);
  }
}
}
public class Test {
public static void main(String[] args) {
  Cus c = new Cus();// 不是两个储户去同一个银行存钱嘛,怎么只创建了一个储户对象,而用run方法表示储户存钱呢?ps:新人,问题无限多。
  Thread t1 = new Thread(c);
  Thread t2 = new Thread(c);
  t1.start();
  t2.start();
}
}

1 个回复

倒序浏览
存钱是一件事,这里就把存钱这件事用了Cus这个类来封装,并产生了一个对象c,接着又创建了两个钱程t1,t2,这两个钱程就是存钱的过程,有两个人存钱肯定就有两个人在做存钱这事件,所以在创建线程t1,t2时都传递了变量c。两个线程的启动就表示两个人在存钱了,两人线程执行的都是同一段代码就表示他们都在做存钱这件事。sum表示的是银行的金额增长和,从代码中可以看出他们是在向同一个银行存钱。
呵呵……不知道讲清楚了没有
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马