private void initThreads() {
		EXECUTORS.execute(new Runnable() {
			@Override
			public void run() {
				try {
					int size = 0;
					Thread.currentThread().setName(getThreadName());
					while (running.get()) {
						InputStream in0 = inSocket.getInputStream();
						OutputStream out0 = outSocket.getOutputStream();
						if ((size = in0.read(writeBuffer)) > 0) {
							out0.write(writeBuffer, 0, size);
							out0.flush();
							if (ServerLogger.isDebugEnabled()) {
								ServerLogger.debug(String.format("#%d >>> DownStream transfer: %d bytes", id, size));
							}
						}
						Thread.sleep(60);
					}
				}
				catch (Throwable ex) {
					running.set(false);
				}
				singal.release();
			}
		});
				
		EXECUTORS.execute(new Runnable() {
			@Override
			public void run() {
				try {
					int size = 0;
					Thread.currentThread().setName(getThreadName());
					while (running.get()) {
						InputStream in1 = outSocket.getInputStream();
						OutputStream out1 = inSocket.getOutputStream();
						if ((size = in1.read(readBuffer)) > 0) {
							out1.write(readBuffer, 0, size);
							out1.flush();
							if (ServerLogger.isDebugEnabled()) {
								ServerLogger.debug(String.format("#%d <<< UpStream transfer: %d bytes", id, size));
							}
						}
						Thread.sleep(60);
					}
				}
				catch (Throwable ex) {
					running.set(false);
				}
				singal.release();
			}
		});
	}