Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Set;
- import java.util.concurrent.CopyOnWriteArraySet;
- /**
- * Thread notifying when it is done running.
- *
- * @author Thibault Helsmoortel
- */
- public abstract class NotifyingThread extends Thread {
- private final Set<ThreadCompleteListener> listeners = new CopyOnWriteArraySet<>();
- /**
- * Adds a listener to this NotifyingThread.
- *
- * @param listener the listener to add
- */
- public final void addListener(final ThreadCompleteListener listener) {
- listeners.add(listener);
- }
- /**
- * Removes a listener from this NotifyingThread.
- *
- * @param listener the listener to remove
- */
- public final void removeListener(final ThreadCompleteListener listener) {
- listeners.remove(listener);
- }
- /**
- * Notifies registered listeners.
- */
- private final void notifyListeners() {
- for (ThreadCompleteListener listener : listeners) {
- listener.notifyThreadComplete(this);
- }
- }
- @Override
- public final void run() {
- try {
- doRun();
- } finally {
- //Run complete, notify listeners
- notifyListeners();
- }
- }
- /**
- * The method to override in stead of the run method.
- */
- public abstract void doRun();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement