1. 程式人生 > >Java 實現多執行緒Thread Runnable Callable 三種方式

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; } }

執行結果