CNET中国旗舰网站

ZDNet China | CNET科技资讯网 | 政府采购 | 行业网站联盟





 
标题: [讨论] SCJP考试试题解析二十三
mesum
超级会员
Rank: 4



UID 321006
精华 0
积分 1811
帖子 73
威望 722
ZD币 160 元
阅读权限 90
注册 2008-4-21
状态 离线
  楼主
发表于 2008-6-26 21:57  资料  个人空间  短消息  加为好友 
开发者在线

SCJP考试试题解析二十三

SCJP考试试题解析二十三


我的QQ号:2535279


www.javaedu.com.cn 

What happens when you try to compile and run the following application? Choose all correct options.

  1. public class Z {

  2. public static void main(String[] args) {

  3. new Z();

  4. }

  5.

  6. Z() {

  7. Z alias1 = this;

  8. Z alias2 = this;

  9. synchronized(alias1) {

  10. try {

  11. alias2.wait();

  12. System.out.println(“DONE WAITING”);

  13. }

  14. catch (InterruptedException e) {

  15. System.out.println(“INTERR

  UPTED”);

  16. }

  17. catch (Exception e) {

  18. System.out.println(“OTHER EXCEPTION”);

  19. }

  20. finally {

  21. System.out.println

  (“FINALLY”);

  22. }

  23. }

  24. System.out.println(“ALL DONE”);

  25. }

  26. }

  A. The application compiles but doesn't print anything.

  B. The application compiles and print “DONE WAITING”

  C. The application compiles and print “FINALLY”

  D. The application compiles and print “ALL DONE”

  E. The application compiles and print “INTERRUPTED”

  解答:A

  点评:在Java中,每一个对象都有锁。任何时候,该锁都至多由一个线程控制。由于alias1与alias2指向同一对象Z,在执行第11行前,线程拥有对象Z的锁。在执行完第11行以后,该线程释放了对象Z的锁,进入等待池。但此后没有线程调用对象Z的notify()和notifyAll()方法,所以该进程一直处于等待状态,没有输出。




顶部
热点频道推荐: C/S开发| 数据库| WEB开发| 嵌入式| 项目管理|
 



当前时区 GMT+8, 现在时间是 2008-12-2 15:44

  Powered by Discuz! 5.5.0 © 2001-2007 Comsenz Inc.
Processed in 0.065657 second(s), 3/4 queries

清除 Cookies - 联系我们 - ZDNetChina中文社区 - 无图版