Вы можете использовать специальный объект поведения, который содержит очередь Runnables.Затем вы можете опубликовать runnables для поведения и разбудить его.Вам нужно разобраться с правильной синхронизацией, чтобы поведение перешло в спящий режим только тогда, когда в очереди больше нет команд, но оно должно работать.
Превратите класс в единый объект, чтобы иметь возможность запускать Runnable внутриBehaviorScheduler, аналог метода SwingUtilities.invokeLater ().
public class ThreadTransferBehavior extends Behavior {
private final static int POST_ID = 9997;
private final WakeupOnBehaviorPost m_wakeupPost = new WakeupOnBehaviorPost(this, POST_ID);
private final Stack<Runnable> commands;
public synchronized void processStimulus(Enumeration i) {
while(!commands.isEmpty()) commands.pop().run();
wakeupOn(m_wakeupPost);
}
public synchronized void queueCommand(Runnable r) {
commands.push(r);
postId(POST_ID);
}
}