CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

请教关于Java多线程的问题

楼主ppp_ppp(阿P)2006-07-04 11:47:08 在 Java / J2SE / 基础类 提问

关于notify和wait我有个小问题想请教各位高手。  
          如果现在我有一个生产者方法,一个消费者方法,都为同步方法,简单代码如下:  
          int   num   =   0;  
          public   synchronized   void   producer()  
          {  
                  num++;  
                  notify();  
          }    
          public   synchronizde   void   consumer()  
          {  
                  while(num<=0)  
                    try  
                      {  
                            wait();  
                      }  
                    catch(Exception   e){}  
                  num--;  
          }  
   
          当有一个线程调用了consumer()方法以后,并且wait了,该线程会释放对象锁。那其他线程这时候能否竞争调用consumer()方法呢?还是其他线程只能调用producer()方法,只有等上一个wait的线程执行完consumer()方法中的代码以后,才能竞争调用consumer()方法呢? 问题点数:80、回复次数:4Top

1 楼haisenmai(我应该做得到)回复于 2006-07-10 19:15:32 得分 0

tryTop

2 楼antimicro(钻了牛角尖)回复于 2006-07-27 18:59:53 得分 0

gzTop

3 楼crazycy(崔毅,blog:http://www.blogjava.net/crazycy/)回复于 2006-07-27 19:06:24 得分 0

不直接回答lz的问题,只把大概原理说一下,lz自己来考虑:  
  这里只讨论synchronizde修饰的方法:  
  如果调用一个对象的synchronizde修饰的方法,那么就不可以再调用这个对象的其它被synchronizde   修饰的方法,这样是对这个对象(类实例)完成了方法级的同步;  
   
  但是依然可以调用这个对象的非被synchronizde   修饰的方法  
   
  lz是否明白了呢?Top

4 楼trueyellow()回复于 2006-07-27 20:35:09 得分 0

都可以调用。。  
   
  另外楼上听说过类锁和对象锁么?  
  含糊的解释会误导新人。。Top

相关问题

关键词

得分解答快速导航

  • 帖主:ppp_ppp

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo