public void run() {

        RUNNING = true;
        try {
            notifier.setTimeCounter(notifier.getTimeCounter() - 1);
            if (notifier.getTimeCounter() <= 0 && notifier.getOutputQ().size() > 0) {

                List<EventBean> batch = new ArrayList<EventBean>();
                notifier.getOutputQ().drainTo(batch);
                for (EventBean evt : batch) {
                    evt.getHeader().setNotificationTime(System.currentTimeMillis());
                }
                EventBean[] evs = (EventBean[]) batch.toArray(new EventBean[0]);
                notifier.getIoTerm().send(evs);
                notifier.increaseNotificationCount(evs.length);
                System.out.println("Timeout elapsed... " + evs.length + " events notified");
            }
        } catch (Exception ex) {
            Logger.getLogger(Runner.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            RUNNING = false;
        }
    }