等待线程完成执行

use*_*201 4 java multithreading

Java新手在这里.我正在使用第三方库给我一个函数,比如F(),其输出决定了我的逻辑.所以我需要它的结果继续我的代码.

问题是F()做了一些I/O,因此产生了一个线程来完成这个功能.他们给了我一些实现的回调,这些回调被调用来从线程返回状态/值.这很好,除了函数F()立即返回并且我的其余代码继续运行.我不希望这样,因为我必须根据F()的结果分配一些对象,所以我真的想等待F()真正完成.

这应该是人们经常遇到的问题.处理这个问题的正确方法是什么?这是我的设计或第三方库中的问题吗?或者我不太了解图书馆?

为了完整起见,我正在开发一个Android应用程序,该库是facebook sdk.该函数是单点登录函数authorize().虽然这是一个通用的问题,我认为最好在Java论坛中解决.

谢谢你的帮助. - P.

Jos*_*ger 5

我不熟悉的Facebook SDK,但正常的机制来处理异步操作,如这是可赎回<>或未来<>接口:您需要创建一个服务执行者,通过在可赎回<>或未来<>,然后继续你的代码.

可以从Future <> javadoc找到一个例子:http://download.oracle.com/javase/6/docs/api/java/util/concurrent/Future.html

另见StackOverflow问题/答案如何从Callable()返回对象