Creación de una programación concurrente de Java (a) hilo

Creación de una programación concurrente de Java (a) hilo

Hay tres maneras de crear un ready-made de tres cada uno tiene sus propias ventajas, cada uno tiene sus propias características. La flexibilidad en el proyecto se puede seleccionar de acuerdo a sus necesidades.

Implementación de una

Aplicación se consigue utilizando una interfaz runable para ejecutar múltiples hilos, pero hay un inconveniente se ejecuta el método de ejecución es sin valor de retorno, ni puede lanzar una excepción.

public class ThreadOne implements Runnable {

    private int a = 10;

    @Override
    public void run() {
        System.out.println("线程" + Thread.currentThread().getName() + a);
    }
}

class Test {
    public static void main(String[] args) throws Exception {
        Thread thread = new Thread(new ThreadOne());
        thread.start();
    }
}
复制代码

Se crea la clase de hilo, y el objeto que implementa la interfaz runable pasa al hilo. Enhebrar el llamado método de inicio para ejecutar las discusiones.

Aplicar el segundo método

Segundo método herencia de clases de rosca para lograr empleó porque Java es un lenguaje único herencia, esta clase hereda de la clase Thread, por lo que no pueden heredar de otras clases. Además, este método también no puede obtener el valor de retorno del método run y el método de ejecución no puede lanzar una excepción.

public class ThreadTwo extends Thread {

    private int a = 10;

    @Override
    public void run() {
        System.out.println("线程" + Thread.currentThread().getName() + a);
    }
}

class TestTwo {
    public static void main(String[] args) throws Exception {
        ThreadTwo threadTwo = new ThreadTwo();
        threadTwo.start();
    }
}
复制代码

implementación de tres

Método tres para compensar un momento para darse cuenta de los dos primeros métodos de desventaja de que el hilo se puede llamar para obtener el valor de retorno, el método de llamada puede lanzar una excepción, pero el código es más complicado que los dos primeros, mediante la implementación de la interfaz invocable y luego implementar Callable parámetros de configuración de interfaz de clase entrantes a través de FutureTask en, y luego pasan a la rosca Future de parámetros estructurales, en el juego FutureTask hecho es un papel de tránsito.

public class ThreadThree implements Callable {

    private int a = 10;

    @Override
    public Object call() throws Exception {
        synchronized (this){
            return ++a;
        }
    }
}

class TestThree {
    public static void main(String[] args) throws Exception{
        ThreadThree threadThree = new ThreadThree();

        for (int i = 0; i < 7; i++) {
            FutureTask<ThreadThree> threadThreeFutureTask = new FutureTask<ThreadThree>(threadThree);
            Thread thread = new Thread(threadThreeFutureTask);

            thread.start();
            System.out.println("线程返回值为:" + threadThreeFutureTask.get());

        }

        System.out.println("线程执行完毕");

    }
}
复制代码

resumen

  1. Aplicación y la realización de un segundo enfoque es relativamente simple en comparación con la tercera aplicación, pero el inconveniente es incapaz de ejecutar el método está sin valor de retorno, el método de gestión no puede lanzar una excepción, pero la tercera aplicación puede obtener método de llamada devuelve un registro de valores, sino también usted puede lanzar una excepción.
  2. Implementación de una tercera realización del procedimiento se utiliza en la implementación de la interfaz, pero se utiliza de dos maneras de lograr la herencia de clases de hilo, que se unían sola java herencia

Supongo que te gusta

Origin juejin.im/post/5e678d40f265da576d60b70d
Recomendado
Clasificación