public void stop() {
			this.doReceive = false;

			do {
				thread.interrupt();

				try {
					thread.join();
				} catch (InterruptedException e) {
					log.trace(Resources.getString("Manager.INTERRUPTED_EXCEPTION")); //$NON-NLS-1$
				}
			} while (thread.isAlive());

			// キューに残ったメッセージを処理する
			while (condition) {
				Message message = messageQueue.poll();

				if (message == null) {
					break;
				} else {
					switch (message.getLevel()) {
					case TRACE:
						log.trace(message.getMessage());
						break;
					case DEBUG:
						log.debug(message.getMessage());
						break;
					case INFO:
						log.info(message.getMessage());
						break;
					case WARN:
						log.warn(message.getMessage());
						break;
					case ERROR:
						// LEVEL_ERRORが発生した場合、Agentによってラッチが解除されないため、
						// Receiverスレッドがメッセージを受け取るまでwaitFin()が終了しない。
						// そのためここには来ない
						log.error(message.getMessage(), message.getThrowable());
						Manager.this.condition = false;
						break;
					default:
						break;
					}
				}
			}
		}