解决方案 »
- 解读 [return ] !!!!!!!!!!
- 给我一个简单的理由,让我好好享受她的美丽......application
- 新手初学Java,写一段程序大家给评价一下,顺便测试一下你和你的他(她)有多配(不许扔砖头啊)
- 刚才问的不大对
- 有关静态类的问题(谢谢)急!
- 怎样在JTree Node上加JCheckBox或者JTable
- 如何判断一个字符串是否能够转换成为整数,如将"1"转换成1,注意,我问的是如何判断。谢谢!!
- 开始学习Java应该从什么开始啊?
- 菜鸟问题,怎么LinkedList比ArrayList添加元素还要慢啊??
- String 格式化的问题,求大神帮助,急,急急!!!
- swing界面的组件更新问题,急问
- 请问关于单机版人人对弈游戏
你现在的count是r的一个局部变量,四个线程构不成互斥,无法同步
————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)[/size]
Integer i = 1;
再
i=2;
程序会认为i的地址已经改变了,所以用Integer锁不住。如果换成int[] i = {1};
修改时用 i[0] = 2;
锁定直接锁i,则可以锁住。
————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)[/size]
===========================================================================
楼主没错,楼主在后面加了个匿名内部类
http://topic.csdn.net/u/20101016/09/85dbf47c-adbe-4fcb-8e91-d0cae2e0946d.html
你的结贴率很低啊,这很伤我这种专心解答问题的人的心但是我还是可以就你这个问题进行说明
第一、synchrinized有2种用法,用在方法声明——同步方法或synchrinized(obj:Object)形成同步区块,obj只能是引用类型而不能是基本数据类型,因为只有对象上才有锁
楼上所谓的什么锁不住锁得住,建议以后不要再这样说了,好吗?
synchrinized(obj:Object){}唯一正解是“进入区块的前提为获得对象上的锁”
第二、你这个代码在没改之前确实形成了互斥,因为要进入同步区块必须先获得r上的锁,所以同一时间只有一个线程在卖票
第三、synchronized (new Integer(count)).这样改之后没有互斥,因为每一个线程的代码运行只需取得这个新Integer上的锁,他们互不相关,同一时间内可以有多个线程在卖票就原来的代码挺好希望去看看互斥的原理和代码形式
三个线程的synchronized 都用同一个对象试试,那就还要涉及到线程协作,不然一个人把票买光