Скажем, например, что у меня есть Runnable с именем RunnableA, который что-то делает.У меня также есть Runnable под названием RunnableB, который делает что-то еще.Можно ли как-нибудь объединить эти два Runnables, чтобы они работали в одном потоке?
Вторая часть вопроса: если это возможно, могу ли я указать порядок их запуска?in?
EDIT !: Причина, по которой я хотел это сделать, заключалась в том, что мне нужно запустить код в 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();
}
Извините, если это не очень хорошо объяснено, оставляйте комментарии, если вам нужны пояснения.
Спасибо!