91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Java項目中創建一個多線程

發布時間:2020-11-20 15:17:46 來源:億速云 閱讀:242 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關怎么在Java項目中創建一個多線程,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

java有以下四種創建多線程的方式

1:繼承Thread類創建線程

2:實現Runnable接口創建線程

3:使用Callable和FutureTask創建線程

4:使用線程池,例如用Executor框架創建線程

DEMO代碼

package thread;
 
import java.util.concurrent.*;
 

public class ThreadTest {
 public static void main(String[] args) throws ExecutionException, InterruptedException {
//  創建線程的第一種方法
  Thread1 thread1 = new Thread1();
  thread1.start();
 
//  創建線程的第二種方法
  Thread2 thread2 = new Thread2();
  Thread thread = new Thread(thread2);
  thread.start();
 
//  創建線程的第三種方法
  Callable<String> callable = new Thread3();
  FutureTask<String> futureTask = new FutureTask<>(callable);
  Thread thread3 = new Thread(futureTask);
  thread3.start();
  String s = futureTask.get();
  System.out.println(s);
 
//  創建線程的第四種方法
  Executor executor = Executors.newFixedThreadPool(5);
  executor.execute(new Runnable() {
   @Override
   public void run() {
    System.out.println(Thread.currentThread()+"創建線程的第四種方法");
   }
  });
  ((ExecutorService) executor).shutdown();
 
 }
}
class Thread1 extends Thread{
 @Override
 public void run() {
  System.out.println(Thread.currentThread()+"創建線程的第一種方法");
 }
}
 
class Thread2 implements Runnable {
 
 @Override
 public void run() {
  System.out.println(Thread.currentThread()+"創建線程的第二種方法");
 }
}
 
class Thread3 implements Callable<String> {
 
 @Override
 public String call() throws Exception {
  return Thread.currentThread()+"創建線程的第三種方法";
 }
}

創建線程的三種方式的對比

1、采用實現Runnable、Callable接口的方式創建多線程

  優勢:

   線程類只是實現了Runnable接口或Callable接口,還可以繼承其他類。

   在這種方式下,多個線程可以共享同一個target對象,所以非常適合多個相同線程來處理同一份資源的情況,從而可以將CPU、代碼和數據分開,形成清晰的模型,較好地體現了面向對象的思想。

   劣勢:

 編程稍微復雜,如果要訪問當前線程,則必須使用Thread.currentThread()方法。

2、使用繼承Thread類的方式創建多線程

  優勢:

  編寫簡單,如果需要訪問當前線程,則無需使用Thread.currentThread()方法,直接使用this即可獲得當前線程。

  劣勢:

  線程類已經繼承了Thread類,所以不能再繼承其他父類。

3、Runnable和Callable的區別

Runnable接口定義的run方法,Callable定義的是call方法。
run方法沒有返回值,call方法必須有返回值。
run方法無法拋出異常,call方法可以拋出checked exception。
Callable和Runnable都可以應用于executors。而Thread類只支持Runnable.

上述就是小編為大家分享的怎么在Java項目中創建一個多線程了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

铅山县| 合川市| 商南县| 米易县| 扶沟县| 屯门区| 韶关市| 余姚市| 长沙县| 班玛县| 延庆县| 柘城县| 富锦市| 驻马店市| 平远县| 乡城县| 武定县| 城固县| 和田市| 北海市| 固始县| 珲春市| 年辖:市辖区| 砀山县| 如东县| 正镶白旗| 晋州市| 白水县| 儋州市| 集贤县| 邯郸县| 沐川县| 土默特左旗| 米脂县| 天门市| 冀州市| 曲靖市| 霞浦县| 镇安县| 凤台县| 宣汉县|