docs: public void stop(boolean afterQueueEmpty){
  		preStop(afterQueueEmpty);
  		while(!(mode.compareAndSet(MODE_STOPPED, MODE_INIT) 
  				|| mode.get() == MODE_INIT)){
  			try {
  				thread.join(100);
  			} catch (InterruptedException e) {
  				// do nothing
  			}
  			preStop(afterQueueEmpty);
  			// 也存在这种可能性：在while作判断的时候，queue.size()>0，
  			// 而take()的时候已经没东西取了，所以join之后也不能死等，要反复interrupt。
  			thread.interrupt();
  		}
  	}