2014-09-06 116 views
0

我在匿名类中创建了新线程。我如何暂停程序直到线程完成。 检查一切工作正常我创建while循环不继续,但我知道这不是解决方案。 我寻找最简单的解决方案。仅在线程结束后继续

public void methodName() { 
    Thread t = new Thread() { 
     public void run() { 
     } 
    } 
    t.start() 
    System.out.print("Finish"); 
} 

我希望只有在线程完成后才能打印完成。

在线程中我使用了一个外部库。我发现线程完成但我在线程中运行的函数没有完成。他们是一种像锁定或同步通知,我可以停止运行,直到此功能完成?

当功能运行完成时,我可以在该位置放置变量。

 ParseQuery<ParseObject> query = ParseQuery.getQuery("GameScore"); 
    query.getInBackground("xWMyZ4YEGZ", new GetCallback<ParseObject>() { 
    public void done(ParseObject object, ParseException e) { 
      if (e == null) { 
      // object will be your game score 
      } else { 
      // something went wrong 
      } 
     } 
     }); 

这是来自API。我想把这个代码放入线程,并且只有在完成函数被调用后才继续。 谢谢,

+1

关于您的编辑:你确定吗?线程直到他们的run()方法结束才会结束。 – Zenadix 2014-09-06 22:12:38

+0

@ Zenadix是的,线程运行一个函数,它也是一个线程(这是它的一个写在api中,但代码已编译,我可以看到)。看起来线程完成了,但函数没有完成运行。我有另一个方法,当这个函数完成时调用。所以我可以把他们的对象 – Alon 2014-09-06 22:31:04

+0

也许如果你发布的代码,我将能够帮助你。 – Zenadix 2014-09-06 22:31:18

回答

7

就叫join的线程上:

t.start(); 
t.join(); 
System.out.print("Finish"); 

join呼叫等待的线程返回之前终止。

+2

必填Javadoc链接:http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html#join-- – hexafraction 2014-09-06 21:04:09

+0

我更新了问题 – Alon 2014-09-06 21:59:28