Cómo cerrar completamente el cliente MINA
Podemos iniciar 2 servidores y conectarlos con la misma instancia de conector. Podemos ver que estas 2 conexiones funcionan de forma independiente y el conector y la sesión no son uno a uno.
Al observar la API y el código fuente, podemos encontrar que el conector aquí es en realidad un administrador de conexiones, que almacena internamente la lista de conexiones de forma sincrónica a través de la cola connectQueue. Cuando se llama al método connect (), la solicitud de conexión actual se registra en la cola y el conector inicia un trabajador interno para administrar estas conexiones. Cuando cerramos la sesión, simplemente cerramos una solicitud, el hilo de trabajo en realidad no se cierra, por lo que el programa no se detiene.
MINA1.1.7
Las conexiones se pueden cerrar estableciendo un tiempo de espera de trabajo. Cuando todas las conexiones estén cerradas, el hilo de trabajo se detendrá, es decir, el conector se detendrá.
Código Java
connector.setWorkerTimeout(1); //1 segundo (el tiempo de espera predeterminado es 60 segundos)
PD: el trabajador está definido en la clase SocketConnector. , e implementado internamente para administrarlo directamente
MINA2.0
Se puede llamar al método dispose() del conector. Este método detiene el subproceso de procesamiento empresarial llamando al método de apagado () de ExecutorService y establece el bit de indicador de eliminación interno que identifica la necesidad de detener el administrador de conexión a través de este indicador.
Código Java
connector.dispose();