当前位置: 技术问答>java相关
检验你的SCJP能力!!!来自SUN的SCJP题库中的一道经典线程题目,你能做出正确的答案吗???
来源: 互联网 发布时间:2015-03-30
本文导语: 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....
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();
你认为正确答案是哪个?为什么?请详细的讲解一下!谢谢!
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();
你认为正确答案是哪个?为什么?请详细的讲解一下!谢谢!
|
楼上的老大,不要陆续公布啊,能不能一次性全发出来啊?
我的email
javor@21cn.com
我的email
javor@21cn.com
|
正确答案是C
解释:AB是不可能的,不须解释。
C:join方法是等待该进程死亡,符合题目要求,也就是线程t死亡后主线程才能继续执行,此时可以保证i已经是10。
D:使该进程暂停,明显不符合。
E:唤醒等待当前对象的其它线程。不符合。
F:同E
G:打断此线程,打断的结果导致i=10的赋值语句不能被执行。
解释:AB是不可能的,不须解释。
C:join方法是等待该进程死亡,符合题目要求,也就是线程t死亡后主线程才能继续执行,此时可以保证i已经是10。
D:使该进程暂停,明显不符合。
E:唤醒等待当前对象的其它线程。不符合。
F:同E
G:打断此线程,打断的结果导致i=10的赋值语句不能被执行。
|
题目是要确保j=10,就是只有线程运行完成(退出run()方法),才可以肯定j=a.i=10,所以,根据Thread的API文档,应该选c,
join
public final void join() throws InterruptedException
等待线程死亡。
其他都不能保证j=a.i在i=10后运行
join
public final void join() throws InterruptedException
等待线程死亡。
其他都不能保证j=a.i在i=10后运行
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。