public void run() { while (true) { DelayedSignal s = senderObject.getNextDelayedSignal(); if (s == null) return; org.jdns.xtuml.runtime.Object target = s.getTarget(); System.out.println(target.getObjectId() + " delivered delayed signal"); synchronized (target) { Integer signalId = s.getSignalId(); Integer targetObjectId = target.getObjectId(); if (target.isActive()) { target.addSignal(s); } else { /* * All interpreters have stopped, * signal shouldn't be deliviered. */ context.getDebugObject().delEntity(); } } } }