static volatile bool ping_pauseAll; static int ping_sleep = 100; // poll pauseAll flag every 100 static volatile bool ping_anyActions; static Map ping_actions = synchroMap(new WeakHashMap); // always returns true static bool ping() ctex { if (ping_pauseAll && !isAWTThread()) { do Thread.sleep(ping_sleep); while (ping_pauseAll); } if (ping_anyActions) { O action; synchronized(mc()) { action = ping_actions.get(currentThread()); if (action instanceof Runnable) ping_actions.remove(currentThread()); if (ping_actions.isEmpty()) ping_anyActions = false; } if (action instanceof Runnable) ((Runnable) action).run(); else if (eq(action, "cancelled")) fail("Thread cancelled."); } true; }