@Override
  public void run() {
    Logger.debug("Network monitor started ...");

    mRunning = true;

    try {
      mProber.start();
      mArpReader.start();
      mTargetProber.start();

      mProber.join();
      mArpReader.join();
      mTargetProber.join();

      Logger.debug("Network monitor stopped.");

      mRunning = false;
    } catch (Exception e) {
      System.errorLogging(e);
    }
  }