Criando uma programação concorrente Java (a) fio

Criando uma programação concorrente Java (a) fio

Há três maneiras de criar um ready-made três cada um tem as suas vantagens, cada um tem suas próprias características. Flexibilidade no projeto podem ser selecionados de acordo com suas necessidades.

Implementação de um

Implementação é conseguido usando uma interface Runable para executar vários segmentos, mas há um lado negativo é executado método de execução é sem valor de retorno, nem pode lançar uma exceção.

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();
    }
}
复制代码

classe Thread é criada, eo objeto que implementa a interface Runable passado para o segmento. Passe a chamada de método start para executar threads.

Implementar Método dois

Método dois herança classe Thread para alcançar empregado porque java é uma linguagem única herança, esta classe herda a classe Thread, assim você pode não herdar outras classes. Além disso, este método também não pode obter o valor de retorno do método de execução eo método de execução não pode lançar uma exceção.

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();
    }
}
复制代码

implementação de três

Método três para compensar um momento para perceber os dois primeiros métodos de desvantagem esse segmento pode chamar para obter o valor de retorno, chamada de método pode lançar uma exceção, mas o código é mais complicado do que os dois primeiros, através da implementação da interface Callable e depois implementar mobilizável parâmetros de configuração de interface classe de entrada através de FutureTask, e depois passou para o segmento futuro por parâmetros estruturais, de fato jogo FutureTask é um 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("线程执行完毕");

    }
}
复制代码

resumo

  1. Implementação e realização de uma segunda abordagem é relativamente simples em comparação com o terceiro implementação, mas a desvantagem é incapaz de executar método é nenhum valor de retorno, o método execute não pode lançar uma exceção, mas o terceiro implementação pode obter chamada de método retorna uma aquisição de valor, mas também você pode lançar uma exceção.
  2. Implementação de uma terceira implementação do método é usado na implementação da interface, mas é usado de duas maneiras de conseguir a herança classe Thread, que seriam ligados java herança simples

Acho que você gosta

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