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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© asvsass 中级黑马   /  2014-2-18 16:24  /  1358 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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>
复制代码

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

5 个回复

倒序浏览
你的队列是不是静态的共享了?
回复 使用道具 举报
e.c 发表于 2014-2-18 17:13
你的队列是不是静态的共享了?

没有静态啊
回复 使用道具 举报

还有代码可以贴上来看下吗?:)
回复 使用道具 举报
.....你的vip跟快速客户号码都用成普通用户的了
Integer num=NumberMachine.getInstance().getCommonManager().generateNewManage();

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
--_.Is’攸稀 发表于 2014-2-18 17:59
.....你的vip跟快速客户号码都用成普通用户的了
Integer num=NumberMachine.getInstance().getCommonManage ...

搞定了 自己都看花了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马