Java 实现多线程Thread Runnable Callable 三种方式

Java 多线程

java 实现 多线程 三种方法

1. 继承Thread重写 run方法。

2.实现Runnable的run方法。无返回值。一个类可以实现多个接口。

3.实现Callable的call方法。有返回值,可以抛出线程错误。一个类可以实现多个接口。

public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);

        //继承 Thread 重写 run方法
        Thread runThread = new Thread(){
            @Override
            public void run(){
                System.out.println(Thread.currentThread().getName()
                        +"@@@@@@@@@继承 Thread 重写 run方法@@@@@@@@@@@@");
            }
        };
        runThread.start();
        //继承 Thread 重写 run方法
        new Thread1().start();


        //实现Runnable 实现 run 方法
        Thread runnableThread = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName()
                        +"##########继承 Thread 重写 run方法############");
            }
        });
        runnableThread.start();
        //实现Runnable 实现 run 方法
        new Thread(new Thread2()).start();

        //实现Callable call方法
        //定义 程序池
        ExecutorService executorService = Executors.newFixedThreadPool(2);
        FutureTask<String> futureTask = new FutureTask<>(new Callable<String>() {
            @Override
            public String call() throws Exception {
                System.out.println(Thread.currentThread().getName()
                        +"$$$$$$$$$$$实现Callable call方法$$$$$$$$$$$$$$");
                return null;
            }
        });
        executorService.submit(futureTask);
        //实现Callable call方法
        executorService.submit(new Callable1());
    }
}
//继承 Thread 重写 run方法
class Thread1 extends Thread{
    @Override
    public void run(){
        System.out.println(Thread.currentThread().getName()
                +"@@@@@@@@@继承 Thread 重写 run方法@@@@@@@@@@@@");
    }
}
//实现Runnable 实现 run 方法
class Thread2 implements Runnable{
    @Override
    public void run(){
        System.out.println(Thread.currentThread().getName()
                +"##########继承 Thread 重写 run方法############");
    }
}
//实现Callable call方法
class Callable1 implements Callable<String>{
    @Override
    public String call(){
        System.out.println(Thread.currentThread().getName()
                +"$$$$$$$$$$$实现Callable call方法$$$$$$$$$$$$$$");
        return null;
    }
}

执行结果

猜你喜欢

转载自www.cnblogs.com/934827624-qq-com/p/9963918.html
今日推荐