01Thread: tres formas de utilizar hilos

Tres formas de usar hilos

  1. Implementar la interfaz Runnable
  2. Implementar la interfaz invocable
  3. Heredar la clase Thread

Implementar la interfaz Runnable y la interfaz Callable es equivalente a crear una tarea que se puede ejecutar en un hilo; después de que se crea la tarea, debe ser impulsada por Thread.

Ejecutable

Necesita implementar run () en la interfaz, escriba las tareas a ejecutar en el método

/**
 * @Auther: match
 * @Date: 2021/2/20 16:25
 * @Description: 演示Runnable接口的简单使用
 */
public class RunnableDemo {
    
    


    private static class Task implements Runnable {
    
    

        @Override
        public void run() {
    
    
            System.out.println(Thread.currentThread().getName());
        }
    }

    public static void main(String[] args) {
    
    
        Thread thread = new Thread(new Task() );
        thread.start();
    }
}

Interfaz invocable

Invocable puede tener un valor de retorno, y FutureTask encapsula el valor de retorno.

/**
 * @Auther: match
 * @Date: 2021/2/20 16:31
 * @Description: 演示Callable接口的简单使用
 */
public class CallableDemo {
    
    

    public static void main(String[] args) throws ExecutionException, InterruptedException {
    
    
        //1.创建callable的实现类
        CallableTask callableTask = new CallableTask();
        //2. 创建一个任务
        FutureTask futureTask = new FutureTask<>(callableTask);
        // 交友线程执行
        Thread thread = new Thread(futureTask);
        thread.start();
        //通过get方法得到返回值
        System.out.println(futureTask.get());
    }

    static class CallableTask implements Callable{
    
    

        @Override
        public String call() throws Exception {
    
    
            System.out.println(Thread.currentThread().getName());

            return "这是Callable的返回值";
        }
    }
}

Heredar hilo


/**
 * @Auther: match
 * @Date: 2021/2/20 16:37
 * @Description: 演示Thread的简单使用
 */
public class ThreadDemo extends Thread {
    
    
    @Override
    public void run(){
    
    
        System.out.println(Thread.currentThread().getName());
    }

    public static void main(String[] args) {
    
    
        ThreadDemo threadDemo = new ThreadDemo();
        threadDemo.start();
    }
}

Comparación de tres formas

La forma de implementar la interfaz es mejor porque:

  1. Java no admite múltiples sistemas de herencia, pero se pueden implementar múltiples interfaces, por lo que si hereda la clase Thread, no podrá heredar otras clases.
  2. La clase solo puede ser ejecutable y es demasiado caro heredar la clase Thread completa.

Supongo que te gusta

Origin blog.csdn.net/qq_41729287/article/details/113886255
Recomendado
Clasificación