sclass Trigger implements Runnable { bool triggered; // for "user" synchronized void trigger() { triggered = true; } public void run() { trigger(); } // for "implementer" - check if triggered and clear flag synchronized bool check() { if (!triggered) false; ret true with triggered = false; } }