按照老师的思路,我自己敲了一遍代码。但是运行的时候:
---------------start---------------------------------------------------
1号COMMON窗口任务获取失败,休息1秒!!!
3号COMMON窗口正在获取服务任务!!!
5号QUICK窗口正在获取服务任务!!!
---------------start---------------------------------------------------
2号COMMON窗口正在获取服务任务!!!
---------------start---------------------------------------------------
3号COMMON窗口任务获取失败,休息1秒!!!
4号COMMON窗口正在获取服务任务!!!
4号COMMON窗口任务获取失败,休息1秒!!!
1号COMMON窗口正在获取服务任务!!!
5号QUICK窗口为第1号QUICK客户服务耗时1秒
---------------end---------------------------------------------------
有一部分是这样显示的。但是我的这个标记start,应该是和其对应的end也应该输出的呀,上面的两个start为什么没有对应start输出呢。
这里是部分代码:
private void commonSever() { Integer number = NumberMachine.getInstance().getCommonManager().fetchNumber(); System.out.println(windowId +"号"+type+"窗口正在获取服务任务!!!"); if(number!=null){ synchronized (type) { System.out .println("---------------start---------------------------------------------------"); long startTime = System.currentTimeMillis(); int maxRandom = Constants.MAX_SEVER_TIME - Constants.MIN_SEVER_TIME; int severTime = new Random().nextInt(maxRandom) + 1 + Constants.MIN_SEVER_TIME; try { Thread.sleep(severTime); } catch (InterruptedException e) { e.printStackTrace(); } long costTime = System.currentTimeMillis() -startTime; System.out.println(windowId + "号" + type + "窗口为第" + number + "号普通客户服务耗时" + costTime / 1000 + "秒"); System.out .println("---------------end---------------------------------------------------"); } }else{ System.out.println(windowId +"号"+type+"窗口任务获取失败,休息1秒!!!"); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } }
而且我把里面的锁住了,为什么还会跳出去呢。这个我就弄不明白了。谁知道怎么来解决给个建议吧。。。。 |