@Override
  public void run() {
    System.out.println("Realtime thread " + getName() + " started.");
    MemoryArea immortal = ImmortalMemory.instance();
    System.out.println(
        "ImmortalMemory instantiated " + immortal.memoryRemaining() + " bytes remains.");
    System.out.println(
        "ImmortalMemory instantiated " + immortal.memoryConsumed() + " bytes consumed.");
    AsyncEventHandler handler = null;
    AsyncEvent event = null;
    try {
      handler = (AsyncEventHandler) immortal.newInstance(SigHandler.class);
      event = (AsyncEvent) immortal.newInstance(AsyncEvent.class);
    } catch (Throwable e) {
      System.err.println("Error occurs: ");
      e.printStackTrace(System.err);
      return;
    }

    System.out.println("Handler and event instantiated.");
    event.addHandler(handler);
    event.bindTo("25");
    event.fire();
    event.fire();
    event.fire();
    event.fire();
    try {
      Thread.sleep(1000);
    } catch (InterruptedException ign) {
    }
  }