CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

检验你的SCJP能力!!!来自SUN的SCJP题库中的一道经典线程题目,你能做出正确的答案吗???

楼主pensincun(天高任彭翔)2001-12-30 12:04:03 在 Java / J2SE / 基础类 提问

class   A   implements   Runnable{  
  int   i;  
  public   void   run(){  
  try{  
  Thread.sleep(50000);  
  i=10;  
  }catch(InterruptedException   e){}  
  }  
  }  
   
  public   class   Test{  
  public   static   void   main(String   a[]){  
  try{  
  A   a   =   new   A();  
  Thread   t   =   new   Thread(a);  
  t.start();  
  //line   17    
  int   j=a.i;  
   
  }catch(Exception   e){}  
  }  
  }  
  Which   statement   at   line   17   will   ensure   that   j=10   at   line   19?  
  A. a.wait();  
  B. t.wait();  
  C. t.join();  
  D. t.yield();  
  E. t.notify();  
  F. a.notify();  
  G. t.interrupt();  
  你认为正确答案是哪个?为什么?请详细的讲解一下!谢谢! 问题点数:20、回复次数:21Top

1 楼chl326(希望你是java高手 拯救我于水火之中)回复于 2001-12-30 12:37:14 得分 0

c   eTop

2 楼linkguic(rake)回复于 2001-12-30 12:49:24 得分 0

好厉害,notify应该不是static的.所以t一定要run才能call   ,是这样么?Top

3 楼chl326(希望你是java高手 拯救我于水火之中)回复于 2001-12-30 12:58:46 得分 0

等待高手回答。。。。。。。。。。。。。。。。Top

4 楼chl326(希望你是java高手 拯救我于水火之中)回复于 2001-12-30 12:59:43 得分 0

正确答案是那个  
  ?Top

5 楼Patrick_DK(我有我的调调,就是这么屌)回复于 2001-12-30 13:23:19 得分 0

不明白,关注  
   
  我觉得B和E是肯定错的,好像wait()和notify()是对对象而言的吧Top

6 楼reki(i feel love fly!)回复于 2001-12-30 14:04:58 得分 0

就是c,我考scjp的时候就遇到了这道题!Top

7 楼shining_ljr(老荣)回复于 2001-12-30 14:21:22 得分 0

eTop

8 楼congling(congling)回复于 2001-12-30 15:53:22 得分 0

应该是c,因为join是等待线程死亡并回收线程资源Top

9 楼tommycat(灵狐秋水)回复于 2001-12-30 16:00:19 得分 0

看来对线程还一点概念都没有呢Top

10 楼Patrick_DK(我有我的调调,就是这么屌)回复于 2001-12-30 16:13:31 得分 0

E应该是错的  
   
   
  看书的时候好像没有怎么看到join(),谁解释一下啊?Top

11 楼dlight(阿贞)回复于 2001-12-30 16:17:18 得分 0

声明一下:我对于线程等等一窍不通。  
   
  不明白。如果int   j=a.i;  
  这句话会不会也同时引起一个线程?如果是这样,那么thread.sleep(50000)会引起那个线程的休眠?t还是a?糊涂糊涂。我被线程搞糊涂了。  
  Top

12 楼arlixin(木子)回复于 2001-12-30 16:25:52 得分 0

此题选c,大家可以去查一下文档。Top

13 楼dlight(阿贞)回复于 2001-12-30 16:30:36 得分 0

什么文档?Top

14 楼gnzhao(gnzhao)回复于 2001-12-30 16:39:33 得分 0

  cTop

15 楼cherami(cherami)回复于 2001-12-30 16:40:44 得分 5

正确答案是C  
  解释:AB是不可能的,不须解释。  
  C:join方法是等待该进程死亡,符合题目要求,也就是线程t死亡后主线程才能继续执行,此时可以保证i已经是10。  
  D:使该进程暂停,明显不符合。  
  E:唤醒等待当前对象的其它线程。不符合。  
  F:同E  
  G:打断此线程,打断的结果导致i=10的赋值语句不能被执行。Top

16 楼wangtaoyy(flow)回复于 2001-12-30 16:45:19 得分 0

cTop

17 楼ycats(加菲猫)回复于 2001-12-30 16:52:22 得分 5

题目是要确保j=10,就是只有线程运行完成(退出run()方法),才可以肯定j=a.i=10,所以,根据Thread的API文档,应该选c,  
  join    
    public   final   void   join()   throws   InterruptedException  
  等待线程死亡。    
  其他都不能保证j=a.i在i=10后运行Top

18 楼pensincun(天高任彭翔)回复于 2001-12-30 17:06:36 得分 0

看来大家的热情听高涨的,我很兴奋!  
  谢谢大家!  
  我公布正确的答案是:C!!!  
  这的确是SCJP题库中的一道题目!  
   
  cherami(cherami)的解释很详细了!  
   
  Thread可是SCJP考察的重点,大家可不能掉以轻心啊!!!  
  BTW:reki(i   feel   love   fly!) 请问阁下考了多少啊?  
  我以后将陆续公布SCJP的题库的,请准备拿下SCJP的同仁门予以密切关注!!!Top

19 楼Patrick_DK(我有我的调调,就是这么屌)回复于 2001-12-30 18:32:51 得分 10

楼上的老大,不要陆续公布啊,能不能一次性全发出来啊?  
   
  我的email  
   
  javor@21cn.comTop

20 楼yuanqingfei(必定伟大)回复于 2002-01-13 18:42:33 得分 0

sadfTop

21 楼pensincun(天高任彭翔)回复于 2002-02-04 16:52:40 得分 0

结帐了!Top

相关问题

  • 面试题目 线程的!
  • 问个线程调度的题目
  • 求scjp模拟题库
  • 线程题目一道,请帮忙说一下。
  • 帮我看看这个基本的线程题目
  • 帮忙做一个基本的计数器的线程题目
  • 一个关于线程的面试题目
  • 一道SCJP题目
  • 一道SCJP题目
  • 一道SCJP题目

关键词

  • 线程
  • scjp
  • 题库
  • 题目
  • 答案
  • 正确
  • 糊涂
  • 死亡
  • 等待
  • join

得分解答快速导航

  • 帖主:pensincun
  • cherami
  • ycats
  • Patrick_DK

相关链接

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

广告也精彩

反馈

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