Los métodos de programación de subprocesos de Java son: 1. Programación de subprocesos colaborativos. Los sistemas multiproceso adoptan la programación colaborativa y el tiempo de ejecución del subproceso está controlado por el propio subproceso. 2. Programación preventiva de subprocesos. Utilizando un sistema multiproceso de programación preventiva, el sistema asignará el tiempo de ejecución de cada subproceso.
El entorno operativo de este tutorial: sistema Windows 7, versión Java 10, computadora DELL G3.
1. Programación cooperativa de subprocesos
El sistema multiproceso adopta una programación cooperativa. El tiempo de ejecución del subproceso lo controla el propio subproceso. Una vez que el subproceso completa su trabajo, notifica activamente al sistema que cambie a otro subproceso. La ventaja del subproceso múltiple cooperativo es que es fácil de implementar, porque el subproceso cambiará de subproceso después de completar su propio trabajo. La operación de cambio es conocida por el propio subproceso, por lo que generalmente no hay problemas de sincronización de subprocesos. Sus deficiencias también son obvias: el tiempo de ejecución del subproceso no se puede controlar y si el código de un subproceso se escribe incorrectamente y el sistema no puede cambiar de subproceso, el programa siempre se bloqueará.
2. Programación preventiva de subprocesos
Al utilizar un sistema multiproceso de programación preventiva, el sistema asignará el tiempo de ejecución de cada subproceso y el proceso en sí no determina el cambio de subproceso. Por ejemplo, en Java, existe un método Thread::yield() que puede ceder activamente el tiempo de ejecución, pero si desea obtener activamente el tiempo de ejecución, el hilo en sí no tiene forma. De esta manera, se implementa la programación de subprocesos y el sistema controla el tiempo de ejecución del subproceso. No hay problema de que un subproceso provoque el bloqueo de todo el proceso o incluso de todo el sistema.
Los anteriores son los dos métodos de programación de subprocesos de Java. Espero que puedan ser útiles para todos.