问题: 在OnCreate函数里,有一个Handler线程处理,有一个Thread线程,我现在想将这个线程完执行完毕再执行Handler里面的线程,该怎么做啊,具体如下:// 检查版本的代码线程
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
if (config.version != 0) {
   getversion gv_ = new getversion(handler4);
   Thread t1 = new Thread(gv_);
   t1.start();
}Thread t2 = new Thread(){
   for(int i=0;i<100;i++)
      System.out.pritnln(i);
};
t2.start();final Handler handler4 = new Handler() {
//....
}}我想先将t2线程中的全部执行完再执行t1线程,有什么办法吗? 谢谢

解决方案 »

  1.   

    把ti.start()挪到t2的run()方法的最后一行
      

  2.   

    1.在t1执行完之前new  t2.
    2.在t1执行后,发一个消息给handler,在handler中执行
      

  3.   

    new Thead(){
    public void run(){
    for(int i=0;i<100;i++)
          System.out.pritnln(i);
    handler.sendEmptryMessage(1);
    }
    }.start();
    private Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
    super.handleMessage(msg);
    switch (msg.what) {
    case 1:
    //开始执行t1;
    break;
    }
    }
    };
    试试这个
      

  4.   

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    if (config.version != 0) {
       getversion gv_ = new getversion(handler4);
       Thread t1 = new Thread(gv_);
       synchronized(this)
        {t1.start();
           this.notifyAll()
         }
    }Thread t2 = new Thread(){
       for(int i=0;i<100;i++)
          System.out.pritnln(i);
    };
    synchronized(this){
        t2.start();
      }
      

  5.   

    Handler 放在 onCreate 外面 
    线程执行完之后给Handler 发消息,让它做操作
      

  6.   

    我这个好像会同时向Handler里面发信息哦。
    if (config.version != 0) {
       getversion gv_ = new getversion(handler4);
       Thread t1 = new Thread(gv_);
       t1.start();
    }getversion里面发送了 "other"
    有时收到thread里的信息先,有时收到other里的信息先。我想一直先收到thread里的消息先。。怎么让那个线程等待啊
      

  7.   

    1.在线程的最后发送一个handler不就可以了吗
    2.启动两个线程,将第一个线程加入join() 第一个线程执行完就执行第二个线程,第二个线程去调用 handler