【发布时间】:2014-04-13 23:47:00
【问题描述】:
基本上,我有几个线程,每个线程都在完成任务。
虽然我在这个子例程中对任务进行了多线程处理以加快整体程序速度。
我需要这个子程序只有在其中的所有线程完成后才关闭,因为在这个子程序完成后,下一个子程序需要生成的信息才能在程序中运行。
与现在发生的情况相反,它允许子例程关闭并让包含的线程在自己的时间在后台运行。这会强制下一个子例程运行,只对部分数据进行操作。
我该怎么做?
代码:
public void MainSetupTasks() throws ClientProtocolException, IOException {
new Thread(new Runnable() {
@Override
public void run() {
// Tasks to be complete
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
// Tasks to be complete
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
// Tasks to be complete
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
// Tasks to be complete
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
// Tasks to be complete
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
// Tasks to be complete
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
// Tasks to be complete
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
// Tasks to be complete
}
}).start();
}
【问题讨论】:
-
听起来您应该熟悉 Java 并发文档:docs.oracle.com/javase/tutorial/essential/concurrency
-
您希望每个人都等待另一个人吗?或者你想在所有这些都完成后得到一个事件?
-
好吧,你为什么不改用
ExecutorService? -
我从来没有使用过“ExecutorService”,你能给出一个代码示例吗?
-
如果我遇到了您的问题,您需要 Cyclicbarrier 或 countdownlatch。加入是否不可能?
标签: java android multithreading android-fragments android-activity