如何在一个线程结束后,紧接着执行其他操作?
因为需要这个线程中初始化了某个数据,接下来的操作需要用到这个数据。。

解决方案 »

  1.   

    Thread t....
    t.start();t.join...
    这要另起一个线程作甚?
      

  2.   


    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import java.util.concurrent.TimeUnit;public class Test {public static void main(String[] args) throws Exception{
    List<Task> list = new ArrayList<Task>();
    Task temp = null;
    for (int i = 0; i < 4; i++) {
    temp = new Task(i * 2, "第" + i + "线程");
    list.add(temp);
    temp.start();
    }
    while (!list.isEmpty()) {
    Iterator<Task> iterator = list.iterator();
    while (iterator.hasNext()) {
    temp = iterator.next();
    if (!temp.isAlive()) {
    iterator.remove();
    }
    }
    TimeUnit.SECONDS.sleep(1);
    }System.out.println("所有任务执行完毕开始跳转");
    }
    }class Task extends Thread {
    private int sleepTime;
    private String threadName;public Task(int sleepTime, String threadName) {
    this.sleepTime = sleepTime;
    this.threadName = threadName;
    }@Override
    public void run() {
    try {
    TimeUnit.SECONDS.sleep(sleepTime);
    System.out.println(threadName + "线程休眠" + sleepTime + "秒后结束执行");
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }
      

  3.   

    一般来说若干种方式了:
    1、如1楼所说,等待该线程运行完毕,用 join();
    2、定期检查该线程是否运行完毕,用 isAlive();
    3、线程运行结束时,用消息(或者说事件)来通知协作线程,可以进行后续动作。
      

  4.   


    第三种方法 你看看 

    if(mIsDecGridView && mIsEnd)
    {
        Message msg = new Message();
        msg.what = INIT_DEC_GRIDVIEW;
        mHandler.sendMessage(msg);

    }private final Handler mHandler = new Handler() {
    public void handleMessage(Message msg) {
    switch (msg.what){
    case MSG_THEME_APPLY_END:
    dismissDialog(ID_DIALOG_UNZIPING);
    handleThemeApplyResult();
    case INIT_DEC_GRIDVIEW:
    InitDescGridView();
    break;
    }
    }
      

  5.   

    join()方法就是干这个的。比如:有两个线程,一个是主线程,另一个是新开的线程t。主线程的代码如下:f1(); f2();执行f2时,需要用到线程t中的数据,那么,这样就可以了:f1(); t.join(); f2();jion()的作用就是合并线程,就是把两个线程的执行合并为了一个线程执行,执行顺序见上面的顺序。解决问题,找到一个合适的、自己能理解的就可以了,不需要去研究太深,除非这个方法解决不了你的问题。