黑马程序员技术交流社区

标题: 银行系统的问题 [打印本页]

作者: asvsass    时间: 2014-2-18 16:24
标题: 银行系统的问题
本帖最后由 asvsass 于 2014-2-18 18:29 编辑

  1. <DIV class=blockcode>
  2. <BLOCKQUOTE>package cn.itcast.bank;

  3. public class NumberMachine {

  4. private NumberManage commonManager=new NumberManage();
  5. private NumberManage expressManager=new NumberManage();
  6. private NumberManage vipManager=new NumberManage();
  7. public NumberManage getCommonManager() {
  8. return commonManager;
  9. }
  10. public NumberManage getExpressManager() {
  11. return expressManager;
  12. }
  13. public NumberManage getVipManager() {
  14. return vipManager;
  15. }

  16. private NumberMachine(){}

  17. public static NumberMachine getInstance(){
  18. return instance;

  19. }
  20. private static NumberMachine instance =new NumberMachine();


  21. }
复制代码

package cn.itcast.bank;

import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

public class MainClass {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
               
                for (int i = 1; i <5; i++) {
                                        ServiceWindow commonWindow=new ServiceWindow();
                                        commonWindow.setWindowId(i);
                                        commonWindow.start();
                                       
                                       
                                }
        
                                ServiceWindow expressWindow=new ServiceWindow();
                                expressWindow.setType(CustomerType.EXPRESS);
                                expressWindow.start();
                                
                                ServiceWindow vipWindow=new ServiceWindow();
                                vipWindow.setType(CustomerType.VIP);
                                vipWindow.start();
                                
                                Executors.newScheduledThreadPool(1).scheduleAtFixedRate(
                                                new Runnable() {
                                                        
                                                        @Override
                                                        public void run() {
                                                                // TODO Auto-generated method stub
                                                                Integer num=NumberMachine.getInstance().getCommonManager().generateNewManage();
                                                                System.out.println(num+"号普通客户等待服务");
                                                               
                                                        }
                                                },
                                                0,
                                                1,
                                                TimeUnit.SECONDS);
                                Executors.newScheduledThreadPool(1).scheduleAtFixedRate(
                                                new Runnable() {
                                                        
                                                        @Override
                                                        public void run() {
                                                                // TODO Auto-generated method stub
                                                                Integer num=NumberMachine.getInstance().getCommonManager().generateNewManage();
                                                                System.out.println(num+"号vip客户等待服务");
                                                        }
                                                },
                                                0,
                                                6,
                                                TimeUnit.SECONDS);
                                Executors.newScheduledThreadPool(1).scheduleAtFixedRate(
                                                new Runnable() {
                                                        
                                                        @Override
                                                        public void run() {
                                                                // TODO Auto-generated method stub
                                                                Integer num=NumberMachine.getInstance().getCommonManager().generateNewManage();
                                                                System.out.println(num+"号快速客户等待服务");
                                                        }
                                                },
                                                0,
                                                2,
                                                TimeUnit.SECONDS);
        
        }
               
}
打印结果变成8号普通客户等待服务
9号普通客户等待服务
10号快速客户等待服务
11号普通客户等待服务
12号普通客户等待服务
13号vip客户等待服务
14号快速客户等待服务
变成数据共享了
而老师的是
1号普通
1号快速
1号vip
  1. package cn.itcast.bank;

  2. import java.util.List;
  3. import java.util.ArrayList;

  4. public class NumberManage {
  5. private int LastNumber=0;
  6. private List<Integer> queueNumber=new ArrayList<Integer>();
  7. public synchronized Integer generateNewManage(){
  8. queueNumber.add(++LastNumber);
  9. return LastNumber;


  10. }


  11. public synchronized Integer FetchServiceNumber(){
  12. if(queueNumber.size()>0)
  13. return queueNumber.remove(0);
  14. return null;
  15. }
  16. }
复制代码

  1. <P> </P>
复制代码


作者: e.c    时间: 2014-2-18 17:13
你的队列是不是静态的共享了?
作者: asvsass    时间: 2014-2-18 17:17
e.c 发表于 2014-2-18 17:13
你的队列是不是静态的共享了?

没有静态啊
作者: e.c    时间: 2014-2-18 17:46
asvsass 发表于 2014-2-18 17:17
没有静态啊

还有代码可以贴上来看下吗?:)
作者: --_.Is’攸稀    时间: 2014-2-18 17:59
.....你的vip跟快速客户号码都用成普通用户的了
Integer num=NumberMachine.getInstance().getCommonManager().generateNewManage();
作者: asvsass    时间: 2014-2-18 18:28
--_.Is’攸稀 发表于 2014-2-18 17:59
.....你的vip跟快速客户号码都用成普通用户的了
Integer num=NumberMachine.getInstance().getCommonManage ...

搞定了 自己都看花了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2