例如,假设我有一个名为 RunnableA 的 Runnable,它可以做一些事情。我还有一个名为 RunnableB 的 Runnable,它可以做其他事情。有没有办法可以将这两个 Runnable 组合起来,以便它们在同一个线程中运行?
问题的第二部分是如果这是可能的,那么我可以指定它们运行的顺序吗?
编辑!:我想这样做的原因是因为我需要在 EDT 上运行代码,但其他一些代码需要在另一个线程上运行。请看下面的代码。
像这样的东西
public final class CompoundRunnable implements Runnable
{
private final Iterable runnables;
public CompoundRunnable(Iterable runnables)
{
// From Guava. Easy enough to do by hand if necessary
this.runnables = Lists.newArrayList(runnables);
}
public CompoundRunnable(Runnable... runnables)
{
this(Arrays.asList(runnables));
}
@Override
public void run()
{
for (Runnable runnable : runnables)
{
runnable.run();
}
}
}
public void setStatusAndProgress(final String status,Runnable runnable)
{
Runnable startUpRunner = new Runnable()
{
public void run()
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
setStatus(status);
selfReference.getProgressBar().setIndeterminate(true);
}
});
}
};
Runnable cleanUpRunner = new Runnable()
{
public void run()
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
setStatus("");
getProgressBar().setIndeterminate(false);
}
});
}
};
Runnable theRunner = new CompoundRunnable(startUpRunner,runnable,cleanUpRunner);
new Thread(theRunner).start();
}
抱歉,如果没有很好地解释,如果您需要澄清,请发表评论。
谢谢!