Java 并發(fā)編程中如何創(chuàng)建線程
簡介
線程是基本的調(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)文章
IDEA新建bootstrap.yml文件不顯示葉子圖標的問題
這篇文章主要介紹了IDEA新建bootstrap.yml文件不顯示葉子圖標的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07Java二分法查找_動力節(jié)點Java學(xué)院整理
這篇文章主要介紹了Java二分法查找的相關(guān)資料,需要的朋友可以參考下2017-04-04做java這么久了居然還不知道JSON的使用(一文帶你了解)
這篇文章主要介紹了做java這么久了居然還不知道JSON的使用(一文帶你了解),本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07Java8 實現(xiàn)stream將對象集合list中抽取屬性集合轉(zhuǎn)化為map或list
這篇文章主要介紹了Java8 實現(xiàn)stream將對象集合list中抽取屬性集合轉(zhuǎn)化為map或list的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02