Java 建立執行緒的方法
public class ThreadTest<V> {
@org.junit.Test
public void test() throws ExecutionException, InterruptedException {
//繼承thread 實現
MyThread myThread = new MyThread();
myThread.start();
//實現Runnable介面實現
MyThread1 myThread1 = new MyThread1();
Thread thread1 = new Thread(myThread1);
thread1.start();
//實現Callable 實現
Callable<V> oneCallable = new MyThread2<>();
FutureTask<V> oneTask = new FutureTask<V>(oneCallable);
//FutureTask 是一個包裝類,它通過Callable建立,同時實現了Future 和Runnable 介面
Thread thread2 = new Thread(oneTask);
thread2.start();
/*
使用ExecutorService\Callable\Future 實現有返回結果的執行緒
這3個介面都屬於Executor框架.返回結果的執行緒是在JDK1.5中引入的
新特性.
可返回值的任務必須實現Callable 介面
執行Callable 任務後,可以獲取一個Future 物件,
在該物件上呼叫get 就可以獲取到Callable任務返回的物件
注意:get 方法時阻塞的,即:執行緒無返回結果,get方法會一直等待
再結合線程池介面ExecutorService 就可以實現有返回結果的多執行緒
*/
int taskSize =5;
//建立一個執行緒值
ExecutorService pool = Executors.newFixedThreadPool(taskSize);
//建立有多個返回值的任務
List<Future> list = new ArrayList<Future>();
for(int i=0;i<taskSize;i++){
Callable c = new MyThread3<String>(i+" ");
//執行任務並獲取Future物件
Future f = pool.submit(c);
list.add(f);
}
//關閉執行緒池
pool.shutdown();
//獲取所有併發任務的執行結果
for(Future f :list){
System.out.println(f.get().toString());
}
}
}
class MyThread extends Thread {
public void run() {
System.out.println("thread run");
}
}
class MyThread1 implements Runnable {
@Override
public void run() {
System.out.println("thread run");
}
}
class MyThread2<V> implements Callable<V> {
@Override
public V call() throws Exception {
System.out.println("thread run");
return null;
}
}
class MyThread3<String> implements Callable<String> {
//此處String 代表是泛型型別,而不是java.lang.String
private String taskNum;
MyThread3(String taskNum) {
this.taskNum = taskNum;
}
@Override
public String call() throws Exception {
System.out.println(taskNum + "thread run");
long start = System.currentTimeMillis();
Thread.sleep(1000);
long end = System.currentTimeMillis();
System.out.println(taskNum + "thread end");
return (String) (Long.toString( (end-start))+":"+taskNum);
}
}
相關推薦
Java建立執行緒的方法
轉載自:https://www.cnblogs.com/3s540/p/7172146.html Java使用Thread類代表執行緒,所有的執行緒物件都必須是Thread類或其子類的例項。Java可以用三種方式來建立執行緒,如下所示: 1)繼承Thread類建立執行緒 2)實現Runn
java建立執行緒的四種方法(轉)
java中建立執行緒的四種方法以及區別 Java使用Thread類代表執行緒,所有的執行緒物件都必須是Thread類或其子類的例項。Java可以用四種方式來建立執行緒,如下所示: 1)繼承Thread類建立執行緒 2)實現Runnable介面建立執行緒 3)使用Callable和Future建立執行緒
java 建立執行緒的三種方法
在java中使用Thread類代表執行緒,所有的執行緒物件都必須是Thread類或其子類的例項,建立執行緒有三種方式: 1.通過繼承Thread類建立執行緒; 2.通過實現Runnable介面建立執行緒; 3.通過使用Callable和Future建立執行緒。 建立執行緒demo
Java基礎之多執行緒之原理、實現方式及匿名內部類建立執行緒方法
一、概念 程序:作業系統當中正在執行的一個程式。例如正在執行一個QQ。 執行緒:程序之內多工的執行單位。例如迅雷當中正在下載的多個電影。 JVM當中:棧(Stack)記憶體是執行緒獨立的,堆(Heap)記憶體是執行緒共享的。 (1)Java程式執行的時候至少有兩個執行緒: 1)主
Java建立執行緒安全的方法
原文連結 譯者:秦建平 校對:方騰飛 首先來看一個問題: 下面這個方法是執行緒安全的嗎?如何才能讓這個方法變成執行緒安全的? public class MyCount { private static int counter = 0; public static int g
-1-5 java 多執行緒 概念 程序 執行緒區別聯絡 java建立執行緒方式 執行緒組 執行緒池概念 執行緒安全 同步 同步程式碼塊 Lock鎖 sleep()和wait()方法的區別 為什麼wait(),notify(),notifyAll()等方法都定義在O
本文關鍵詞: java 多執行緒 概念 程序 執行緒區別聯絡 java建立執行緒方式 執行緒組 執行緒池概念 執行緒安全 同步 同步程式碼塊 Lock鎖 sleep()和wait()方法的區別 為什麼wait(),notify(),notifyAll()等方法都定義在Object類中 多執行緒
Java 建立執行緒池的四種方法
Java通過Executors提供四種執行緒池,分別為:newCachedThreadPool建立一個可快取執行緒池,如果執行緒池長度超過處理需要,可靈活回收空閒執行緒,若無可回收,則新建執行緒。newFixedThreadPool 建立一個定長執行緒池,可控制執行緒最大併發
Java 建立執行緒的方法
public class ThreadTest<V> { @org.junit.Test public void test() throws ExecutionException, InterruptedException {
java建立執行緒的兩種方法
本人小白一枚,初學java。感覺java學起來非常自然,寫起程式來思路也很清晰,剛剛學完多執行緒程式設計一塊,所以想將一些比較重點的知識點寫下來,防止遺忘。 java中建立一個執行緒有兩種方法: 繼承Thread類,重寫run() 方法 實現 Runnab
Java建立執行緒的兩種方法比較
1 前言 Java提供了執行緒類Thread來建立多執行緒的程式,執行緒類和普通java類並沒有多大差別,只是執行緒類要麼繼承了Thread類,要麼實現了Runnable介面,這也引出了實現執行緒的兩種方式: 1、A extends Thread 2、
Java 建立執行緒的方法2
Thread 類有個 registerNatives 本地方法,該方法主要的作用就是註冊一些本地方法供 Thread 類使用,如 start0(),stop0() 等等,可以說,所有操作本地執行緒的本地方法都是由它註冊的 . 這個方法放在一個 static 語句塊中,這就表
jvm之java建立執行緒導致記憶體異常
1。以下執行緒啟動,請注意儲存當前工作,因為jav的執行緒是對映到作業系統的核心執行緒上,下面程式碼執行,容易導致作業系統假死 會導致部署程式碼的缺失,執行以上程式會導致如下結果如: 請強制結束以下程序。 分析如下: java的執行緒執行是對映到作業系統的核心執行緒上的。
JAVA 建立執行緒ThreadDemo類
class Thread1 extends Thread{ public void run(){ //獲取當前執行緒名字 System.out.println(Thread.currentThread().getName()); } } class Thread2 extends
Java建立執行緒的三種方式
繼承Thread (1)定義Thread類的子類,重寫該類的run方法,該run方法的方法體就代表了執行緒要完成的任務。因此把run()方法稱為執行體。 (2)建立Thread子類的例項,即建立了執行緒物件。 (3)呼叫執行緒物件的start()方法來啟動該執行緒。
Java 多執行緒方法詳解
靜態方法 Thread Thread.currentThread() 該方法用於獲取當前執行緒物件,當我們用Runnable方式來實現run的時候,run中的this指向的不是執行緒物件,此時你要獲取
Java多執行緒方法說明
簡單說明 博文中提到的"可參閱博文"還沒來得及寫,見諒! 靜態方法 Thread Thread.currentThread() 該方法用於獲取當前執行緒物件,當我們用Runnable方式來實現run的時候,run中的this指向的不是執行緒物件,此時你要獲取當前執行緒,
Java建立執行緒的三種方式以及優劣對比
Java使用Thread類代表執行緒,所有的執行緒物件都必須是Thread類或者其子類例項。每個執行緒的作用是完成一定的任務,實際上是執行一段程式流 #1. 繼承Thread類建立執行緒類 通過繼承Thread類來建立並啟動多執行緒的步驟如下: 定
Java建立執行緒的三種方式及其對比
Java中建立執行緒主要有三種方式: 一、繼承Thread類建立執行緒類 (1)定義Thread類的子類,並重寫該類的run方法,該run方法的方法體就代表了執行緒要完成的任務。因此把run()方法稱為執行體。 (2)建立Thread子類的例項,即建立了執行緒物
Java建立執行緒的4種方式及優缺點
目錄 1. 通過繼承Thread類實現 2. 通過實現Runnable介面實現 3. 通過lambda的方式實現 4. 通過Callable和Future建立執行緒 5. 通過繼承Thread類實現 程式碼展示 6. 通過實現Runnable介面實
Java 建立執行緒的三種方式及其對比
Java中建立執行緒主要有三種方式: 一、繼承Thread類建立執行緒類 (1)定義Thread類的子類,並重寫該類的run方法,該run方法的方法體就代表了執行緒要完成的任務。因此把run()方法稱為執行體。 (2)建立Thread子類的例項,即建立了執行緒物件。 (3)呼