站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题线程中的run方法是否有this引用

线程中的run方法是否有this引用

摘要: 线程中的run方法是否有this引用


class A implements Runnable{
public int i=1;
public void run(){
this.i=10;
}
}
public class Test{
public static void main(String args){
A a=new A();
11) new Thread(a).start();
int j=a.i;
13)
}
}
what is the value of j at line 13?
A. 1
B. 10
C. the value of j cannot be determined
D. An error at line 11 cause compilation to fail
Answer:C

问题1 我测试下来应该是1,为什么选C,是不是答案有问题

2.这里this.i这句是否有意义,因为这里的run方法比较特殊


程序我测试了一下的,答案是对的,因为创建一个新的线程后,两个线程的优先级一样,就不知道哪个先运行了,而且run方法中的this是可以用的,不管它是多特殊的方法,他在类中就应该可以用this。我在中间加了一段代码。让主线程等待一会,结果就为10,但是在速度很慢的机器上,或者在某些情况下,主线程会停顿一会的。

A a = new A();
new Thread(a).start();
Thread.sleep(1);
int j = a.i;
System.out.println(j);


C是对的
这个牵涉到thread,因为程序是无法决定在某一时刻会执行那个thread。在new Thread(a).start();执行后,其实至少存在了两条线程,main和new Thread(a),接下来时间片会选那个运行只能由操作系统决定。你测试的是一个例,别被表象迷惑了


来晚了,舍点分给我


↑返回目录
前一篇: 关于eclipst的一点问题
后一篇: (重分请教:)Sun Java Creator 打成 WAR 包后如何布署在JBOSS下面 (来者都有分,帮顶也行)