老紫竹的正解 不过要注意多线程class A { static int b; static void doSomething() { new Thread() { public void run() { System.out.println("1 In thread : b = " + b); b = 10; System.out.println("2 In thread : b = " + b); } }.start(); } public static void main(String[] args) { A.doSomething(); for (int i = 0; i < 50; i++) { System.out.println(i+" In main : b = " + b); } } }猜猜结果: 0 In main : b = 0 1 In main : b = 0 2 In main : b = 0 3 In main : b = 0 4 In main : b = 0 5 In main : b = 0 . . . 49 In main : b = 0 1 In thread : b = 0 2 In thread : b = 10这是结果之一,我运行了很多次,有好几个可能的结果,也可能在二十多的时候b=10了 但第一次的时候,b肯定是0的,这时候,怎么样才能得到正确的值?
{ void method(
new runnable()
{
public void run()
{
b = methodB() ;
}
}
);
int b;
//我想在这个地方得到变量b的值该怎么办???
}把 b 放到这里声明就行了!
int value;
}Class A{
B b = new B();
void method(
new runnable(){
int b;
public void run(){
b = methodB();
}
public void getValue(final B b){ //一定得是final的
b.value = b ;
}
}.getValue(b);
){
b.value ; //我想在这个地方得到变量b的值该怎么办???
}可是这样一来你的thread却没有start了~
{
int b ;
void method0()
{
void method1(
new runnable()
{
public void run()
{
b = method2() ;
}
}
);
//楼上的~~把b定义在外部类中,现在在这个地方访问b可以不,因为内部类能访问外部类的变量~~~
//我想在这个地方得到变量b的值该怎么办??? }
}
不过要注意多线程class A { static int b; static void doSomething() {
new Thread() { public void run() {
System.out.println("1 In thread : b = " + b);
b = 10;
System.out.println("2 In thread : b = " + b);
}
}.start();
} public static void main(String[] args) {
A.doSomething();
for (int i = 0; i < 50; i++) {
System.out.println(i+" In main : b = " + b);
}
}
}猜猜结果:
0 In main : b = 0
1 In main : b = 0
2 In main : b = 0
3 In main : b = 0
4 In main : b = 0
5 In main : b = 0
.
.
.
49 In main : b = 0
1 In thread : b = 0
2 In thread : b = 10这是结果之一,我运行了很多次,有好几个可能的结果,也可能在二十多的时候b=10了
但第一次的时候,b肯定是0的,这时候,怎么样才能得到正确的值?