code: private void printException(Runnable r, Throwable t) {
  		if (t == null && r instanceof Future<?>) {
  			try {
  				Future<?> future = (Future<?>) r;
  				if (future.isDone())
  					future.get();
  			} catch (CancellationException ce) {
  				t = ce;
  			} catch (ExecutionException ee) {
  				t = ee.getCause();
  			} catch (InterruptedException ie) {
  				Thread.currentThread().interrupt(); // ignore/reset
  			}
  		}
  		if (t != null)
  			logger.error(t.getMessage(), t);
  	}
docs: 线程池内异常处理
  @param r
  @param t