protected void interrupt() {
		logger.info(Thread.currentThread().getName() + " is interrupted");
		if (!Thread.currentThread().isInterrupted()) {
			Thread.currentThread().interrupt();
		}
		ThreadGroup root = Thread.currentThread().getThreadGroup();
		Thread[] thds = new Thread[root.activeCount()];
		int nthds = root.enumerate(thds);
		for (int i = 0; i < nthds; i++) {
			if (!thds[i].isInterrupted()) {
				logger.info(thds[i].getName() + " is interrupted");
				thds[i].interrupt();
			}
		}

	}