当前页面: 开发资料首页 → 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),接下来时间片会选那个运行只能由操作系统决定。你测试的是一个例,别被表象迷惑了
来晚了,舍点分给我