Java 實現多執行緒Thread Runnable Callable 三種方式
阿新 • • 發佈:2018-11-15
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; } }
執行結果