Tres formas de implementar múltiples subprocesos en Java
En Java, hay tres formas de implementar múltiples subprocesos. El primer método: heredar la clase de subproceso y anular la función Ejecutar. El segundo método: implementar la interfaz ejecutable y reescribir la función Ejecutar. El tercer método: implementa la interfaz llamable y anula la función de llamada. Este artículo explicará cómo se pueden implementar estos tres métodos a través de ejemplos. Si lo necesita, consultelo.
(1) Heredar la clase de subprocesos y anular la función Ejecutar.
La clase XX extiende el hilo {public void run () {thread.sleep (1000) // El hilo duerme durante 1000 milisegundos, el sueño hace que el hilo ingrese al estado de bloque y libera recursos}} Inicie el hilo:
Object.start () // inicia el hilo, ejecute la función Ejecutar
(2) Implementar la interfaz ejecutable, el código es el siguiente
Clase MyThread implementos Runnable {Nombre de cadena privada; public mythread (nombre de cadena) {super (); this.name = name; } @Override public void run () {for (int i = 0; i <200; i ++) {system.out.println ("hilo"+nombre+"--->"+i); }}} public class ThreadDemo {public static void main (string [] args) {myThread a = new MyThread ("A"); Mythread b = nuevo MyThread ("B"); Mythread c = nuevo MyThread ("C"); nuevo hilo (a) .Start (); nuevo hilo (b) .Start (); nuevo hilo (c) .Start (); }}(3) Implemente la interfaz invocatoria y reescribe la función de llamada
Callable es una interfaz similar a Runnable. Las clases que implementan la interfaz invocatoria y las clases que implementan el Runnable son tareas que pueden ejecutarse por otros hilos.
Existen varias diferencias entre Callable y Runnable:
Ejemplo de código llamable Java:
clase TaskWithResult implementa Callable <String> {private int id; Public TaskWithResult (int id) {this.id = id; } @Override public string llamado () lanza la excepción {return "resultado de la tarea con taskresult" + id; }} clase pública CallableTest {public static void main (string [] args) lanza interruptedException, ExecutionException {ExecutorService exec = Ejecutors.newCachedThreadPool (); ArrayList <Future <String>> resultados = new ArrayList <Future <String>> (); // El futuro es equivalente a un contenedor utilizado para almacenar los resultados de la ejecución del ejecutor para (int i = 0; i <10; i ++) {results.add (exec.submit (new TaskWithResult (i))); } para (futuro <string> fs: resultados) {if (fs.isdone ()) {system.out.println (fs.get ()); } else {System.out.println ("El resultado futuro aún no está completo"); }} exec.shutdown (); }}Gracias por leer, espero que pueda ayudarte. ¡Gracias por su apoyo para este sitio!