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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 霍明波 中级黑马   /  2012-8-23 16:02  /  2130 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 霍明波 于 2012-8-23 16:05 编辑

import java.util.ArrayList;
import java.util.List;
public class NumberManager
{
        private int lastNumber = 1;
        private List<Integer> queueNumber = new ArrayList<Integer>();
        public synchronized int generateNewManager()
        {
                queueNumber.add(lastNumber);
                return lastNumber++;
        }
        public synchronized int fetchServiceNumber()
        {
                return queueNumber.remove(0);
        }
}
此程序为张老师7k银行-4中的程序其中红字,为什么用synchronized,张老师说什么互斥的,不是太懂,请明白的告诉我问题所在,解释下互斥怎么回事,在解释下queueNumber.remove(0)方法。。。。。。多谢

评分

参与人数 1技术分 +1 收起 理由
田建 + 1

查看全部评分

7 个回复

倒序浏览
你想想啊,这个题目的银行窗口有6个和很多个排队的号码,但一个窗口只能处理1个号码,如果你不加synchronized的话,就会出现好几个窗口执行一个号码,或者好几个号码在一个窗口里执行的情况。
回复 使用道具 举报
1).被synchronized标记的方法或代码在同一时间只能被一个进程访问执行,只有当这个进程执行完了这个方法或代码,其他进程才能进入这个方法或进程来执行
2).queueNumber.remove(0)方法则是删除索引(这里为0)指向的对象,对把这个对象作为返回值返回

评分

参与人数 1技术分 +1 收起 理由
张立江 + 1 赞一个!

查看全部评分

回复 使用道具 举报
呵呵 我来,我来,我想楼主的意思,这他妈的什么意思?呵呵!  简单来说就是 synchronized  这是关键字,被这个修饰的函数相当于给函数加锁,假设AB两线程,A线程没出去,B就进步不来,明白了吗?要么你进去,要么我进去,哈哈!所以就互斥了。
回复 使用道具 举报
synchronized的作用就是某个人在某一时刻只能被一个窗口服务,不能同时被其它窗口服务。方法fetchServiceNumber()就是取得将要服务的号码,某个窗口取号时,其它窗口不可以取号,只能排队等候。
回复 使用道具 举报
RWJ2012 发表于 2012-8-23 20:44
synchronized的作用就是某个人在某一时刻只能被一个窗口服务,不能同时被其它窗口服务。方法fetchServiceNu ...

但是好像是要有对象一样才可以同步的啊,他们好像是两个对象,如果不是的话对象指的是什么呢
回复 使用道具 举报
朱烈葵 发表于 2012-8-23 20:42
呵呵 我来,我来,我想楼主的意思,这他妈的什么意思?呵呵!  简单来说就是 synchronized  这是关键字,被 ...

素质。。。
回复 使用道具 举报
霍明波 发表于 2012-8-24 16:01
素质。。。

e..................
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马