public void start() {
   if (_thread == null || !_thread.isAlive()) {
     reset();
     _thread = new DataThread<V>(this);
     _thread.start();
   }
 }
 public void stop() {
   if (_thread != null && _thread.isAlive()) {
     _thread.terminate();
     try {
       _thread.join();
     } catch (InterruptedException e) {
       log.warn("stopping interrupted");
     }
   }
 }