我想得到m的值为线程执行完毕后的值,但是,得不到线程执行完毕后的值,总是得到m=0,怎么样可以得到allsum()返回的值啊,必须是allsum()这个返回的值public class TheTest extends Activity {
    private static final String TAG = "TheTest";
    int width;
    int height;
    int sum,m;
    Thread myThread;    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);      
        
        m = allsum();
        Log.d("wangchen","m = "+m);
        
    }
    
    private int allsum(){ 
        myThread = new Thread(myRun);
        myThread.start();
    
    
    return sum;
    
    }
    
    Runnable myRun = new Runnable(){ @Override
public void run() { sum = sum + 1;

Log.d("wangchen","sum = "+sum);
}
    
    };   
}

解决方案 »

  1.   

    线程谁也不知道它什么时候执行完毕。
    你在run方法里,sum计算完毕后,通过handler发个消息把值放到Message对象里,重写handleMessage方法处理这个传过来的消息时得到sum值
      

  2.   

    2楼的方法是正确的,handler。这个涉及到线程安全的问题
      

  3.   


    我也用过啊。。只是。。还没等我传回去。。allsum()方法就已经把值给return了啊晕。。还是得不到计算后的sum的值。。
      

  4.   

    你不要让allsum()立即return sum的值呀这样永远都得不到 计算后的结果,因为计算的结果是在另一个线程产生的。让allsum 返回类型为空。在myRun 计算完毕后,用handler ,post 一个消息返回给主线程,然后主线程再来取得 sum的值。也可以用AsyncTask 代替handler 和mRun实现同样的效果。
      

  5.   

        按照楼主的需求,AsyncTask会更合适一些,相较于线程,异步任务更加轻量化。