欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java 并發(fā)編程中如何創(chuàng)建線程

 更新時間:2021年03月05日 08:46:06   作者:布禾  
這篇文章主要介紹了Java 并發(fā)編程中如何創(chuàng)建線程,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下

簡介

線程是基本的調(diào)度單位,它被包含在進程之中,是進程中的實際運作單位,它本身是不會獨立存在。一個進程至少有一個線程,進程中的多個線程共享進程的資源。

Java中創(chuàng)建線程的方式有多種如繼承Thread類、實現(xiàn)Runnable接口、實現(xiàn)Callable接口以及使用線程池的方式,線程池將在后面文章中單獨介紹,這里先介紹另外三種方式。

繼承Thread類

優(yōu)點:在run方法里可以用this獲取到當前線程。

缺點:由于Java不支持多繼承,所以如果繼承了Thread類后就不能再繼承其他類。

public class MyThread extends Thread {
 /**
  * 線程要執(zhí)行的任務(wù)
  */
 @Override
 public void run() {
  System.out.println("do something...");
 }

 public static void main(String[] args) {	
	//創(chuàng)建線程
  MyThread myThread = new MyThread();
	//啟動線程
  myThread.start();	
 }
}

實現(xiàn)Runnable接口

優(yōu)點:實現(xiàn)Runnable接口后不影響繼承其他類,以及有利于多個線程資源共享。

缺點:獲取當前線程需要調(diào)用Thread.currentThread()。

public class MyThread implements Runnable {
  /**
  * 線程要執(zhí)行的任務(wù)
  */
 @Override
 public void run() {
  System.out.println("do something...");
 }

 public static void main(String[] args) {
	//創(chuàng)建兩個線程,并指定相同的任務(wù)
	Thread thread1 = new Thread(new MyThread());
  Thread thread2 = new Thread(new MyThread());
	//啟動線程
  thread1.start();
  thread2.start();
 }
}

實現(xiàn)Callable接口

優(yōu)缺點類似于實現(xiàn)Runnable接口,但是實現(xiàn)Callable接口可以有返回值。

public class MyThread implements Callable<String> {
 /**
  * 線程要執(zhí)行的任務(wù),并且具有返回值
  */
 @Override
 public String call() throws Exception {
  System.out.println("do something...");
  Thread.sleep(3000);
  return "我是返回值";
 }

 public static void main(String[] args) throws ExecutionException, InterruptedException {
	//創(chuàng)建異步任務(wù)
  FutureTask<String> futureTask = new FutureTask(new MyThread());
	//啟動線程
  new Thread(futureTask).start();
	//阻塞等待線程執(zhí)行完成并返回結(jié)果
  String result = futureTask.get();
  System.out.println(result);
 }
}

以上就是Java 并發(fā)編程中如何創(chuàng)建線程的詳細內(nèi)容,更多關(guān)于Java 創(chuàng)建線程的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • springboot使用Validator校驗方式

    springboot使用Validator校驗方式

    這篇文章主要介紹了springboot使用Validator校驗方式,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-01-01
  • IDEA新建bootstrap.yml文件不顯示葉子圖標的問題

    IDEA新建bootstrap.yml文件不顯示葉子圖標的問題

    這篇文章主要介紹了IDEA新建bootstrap.yml文件不顯示葉子圖標的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java Calendar類使用總結(jié)及使用實例

    Java Calendar類使用總結(jié)及使用實例

    這篇文章主要介紹了Java Calendar類使用總結(jié)及使用實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Java四種遍歷Map的方法

    Java四種遍歷Map的方法

    今天小編就為大家分享一篇關(guān)于Java四種遍歷Map的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • SpringBoot停止啟動時測試檢查rabbitmq操作

    SpringBoot停止啟動時測試檢查rabbitmq操作

    這篇文章主要介紹了SpringBoot停止啟動時測試檢查rabbitmq操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java二分法查找_動力節(jié)點Java學(xué)院整理

    Java二分法查找_動力節(jié)點Java學(xué)院整理

    這篇文章主要介紹了Java二分法查找的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Java中對象的序列化方式克隆詳解

    Java中對象的序列化方式克隆詳解

    在學(xué)習(xí)編程的過程中,我覺得不止要獲得課本的知識,更多的是通過學(xué)習(xí)技術(shù)知識提高解決問題的能力,這樣我們才能走在最前方。這篇文章主要給大家介紹了Java中對象的序列化方式克隆,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • 做java這么久了居然還不知道JSON的使用(一文帶你了解)

    做java這么久了居然還不知道JSON的使用(一文帶你了解)

    這篇文章主要介紹了做java這么久了居然還不知道JSON的使用(一文帶你了解),本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Java8 實現(xiàn)stream將對象集合list中抽取屬性集合轉(zhuǎn)化為map或list

    Java8 實現(xiàn)stream將對象集合list中抽取屬性集合轉(zhuǎn)化為map或list

    這篇文章主要介紹了Java8 實現(xiàn)stream將對象集合list中抽取屬性集合轉(zhuǎn)化為map或list的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Django之多對多查詢與操作方法詳解

    Django之多對多查詢與操作方法詳解

    這篇文章主要介紹了Django之多對多查詢與操作方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05

最新評論