多线程的三种实现方式
????????在Java中,多線程的實現方式分別為:繼承Thread類、實現Runnable接口以及使用Callable和Future實現多線程,前兩種都沒有返回值,而通過用Callable和Future實現的多線程有返回值,我們來分別介紹一下這三種實現多線程的方式:
第一種:繼承Thread類
? ? ? ? ①定義一個類、繼承Thread類;
? ? ? ? ②在這個類里面重寫run()方法;
? ? ? ? ③創建這個類的對象;
? ? ? ? ④啟動線程。
代碼演示:
/創建MyThread繼承Thread類 public class MyThread extends Thread{//重寫run方法@Overridepublic void run() {System.out.println("線程啟動了");} }public class Test {public static void main(String[] args) {//創建MyThread對象MyThread mt = new MyThread();//啟動線程mt.start();} }第二種:實現Runnable接口
? ? ? ? ①定義一個類MyRunnable實現Runnable接口;
? ? ? ? ②在MyRunnable類中重寫run()方法;
? ? ? ? ③創建MyRunnable類的對象;
? ? ? ? ④創建Thread類對象,把MyRunnable對象作為參數傳遞給該對象;
? ? ? ? ⑤啟動線程
代碼演示:
//創建MyRunnable類 實現Runnable接口 public class MyRunnable implements Runnable{//重寫run方法@Overridepublic void run() {System.out.println("線程啟動了");} }public class Test {public static void main(String[] args) {//創建MyRunnable對象MyRunnable mr = new MyRunnable();//創建Thread對象 將MyRunnable對象傳遞進去Thread thread = new Thread(mr);//啟動線程thread.start();} }第三種:使用Callable和Future實現
? ? ? ? ①定義一個MyCallable類,實現Callable接口;
? ? ? ? ②在MyCallable類中重寫call()方法(此方法有返回值);
? ? ? ? ③創建MyCallable對象;
? ? ? ? ④創建Future的實現類對象FutureTask,把MyCallable對象作為構造方法的參數;
? ? ? ? ⑤創建Thread類的對象,把FutureTask作為構造方法的參數;
????????⑥啟動線程
代碼演示:
//定義一個MyCallable類,實現Callable接口 public class MyCallable implements Callable<String> {//重寫call()方法@Overridepublic String call() throws Exception {System.out.println("線程開啟了22");return "結果";} }public class Test {public static void main(String[] args) {//創建MyCallable對象MyCallable myCallable = new MyCallable();//創建Future的實現類對象FutureTask,把MyCallable對象作為構造方法的參數FutureTask<String> futureTask = new FutureTask<>(myCallable);//創建Thread類的對象,把FutureTask作為構造方法的參數Thread thread =new Thread(futureTask);//啟動線程thread.start();} }????????實現Runnable、Callable接口的方式,擴展性強,實現接口的同時還可以繼承其他的類。但編程相對來說比較復雜,不能直接使用Thread類中的方法。
? ? ? ? 繼承Thread類的方式,編程相對簡單,可以直接使用Thread的方法,但擴展性比較差,不能再繼承其他的類。
總結
以上是生活随笔為你收集整理的多线程的三种实现方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Computing Curricula
- 下一篇: 快递e站系统