在继续之前如何确定线程已完成?
How can I be sure a thread is complete before continuing?
我刚刚开始在 Android java 中使用线程。我正在从主 activity 启动一个线程,但在继续主逻辑流程之前我需要确保它已完成。
密码是:
MyClass myclass = new MyClass();
new Thread() {
public void run() {
myclass.myMethod(); // Do some work here
}
}.start();
// More work here which assumes myMethod() has completed
myMethod 中的工作涉及 url 调用,因此可能需要几秒钟,我需要确保它已完成才能继续。
有人可以建议最好的方法吗?
非常感谢
您可以使用 CountDownLatch:
CountDownLatch latch = new CountDownLatch(1); // create latch object with counter set to 1
new Thread() {
public void run() {
myclass.myMethod(); // Do some work here
latch.countDown(); // decrement counter from 1 to 0
}
}.start();
latch.await(); // await until counter in latch reaches 0
您还应该考虑使用一些库来处理 Android 中的异步操作,例如 rxJava 或 AsyncTask。
我刚刚开始在 Android java 中使用线程。我正在从主 activity 启动一个线程,但在继续主逻辑流程之前我需要确保它已完成。
密码是:
MyClass myclass = new MyClass();
new Thread() {
public void run() {
myclass.myMethod(); // Do some work here
}
}.start();
// More work here which assumes myMethod() has completed
myMethod 中的工作涉及 url 调用,因此可能需要几秒钟,我需要确保它已完成才能继续。 有人可以建议最好的方法吗? 非常感谢
您可以使用 CountDownLatch:
CountDownLatch latch = new CountDownLatch(1); // create latch object with counter set to 1
new Thread() {
public void run() {
myclass.myMethod(); // Do some work here
latch.countDown(); // decrement counter from 1 to 0
}
}.start();
latch.await(); // await until counter in latch reaches 0
您还应该考虑使用一些库来处理 Android 中的异步操作,例如 rxJava 或 AsyncTask。