java實現多執行緒的方法

Allen-Liu發表於2017-09-06

Java虛擬機器允許應用程式併發的執行多個執行緒,在java中實現多執行緒的方法由以下三種:

1. 實現Runnable介面,並且實現該介面的run()方法。主要步驟如下

1.1 自定義類並且實現Runnable介面,實現run()方法。

1.2 建立Thread物件,用實現Runnable介面的物件作為引數例項化該Thread物件。

1.3 呼叫Thread的start()方法。

舉例說明

//自定義類並且實現Runnable介面,實現run()方法
class MyThread implements Runnable
{
	public void run()
	{
		System.out.print("Thread body");
	}
}

public class Test 
{

	public static void main(String[] args)
	{
		MyThread thread = new MyThread();
		//建立Thread物件,用實現Runnable介面的物件作為引數例項化該Thread物件。
		Thread t = new Thread(thread);
		//呼叫Thread的start()方法。
		t.start();

	}

}
2. 繼承Thread類,重寫run()方法。

Thread本質上是實現了Runnable介面的一個例項,代表一個執行緒的例項,並且啟動執行緒的唯一方法為呼叫Thread類的start()方法。這種方法是通過自定義繼承自Thread的自定類,並重寫run()方法實現。舉例如下:

//自定義類並繼承自Thread類,實現run()方法
class MyThread extends Thread
{
	public void run()
	{
		System.out.print("Method two!");
	}
}

public class Test 
{

	public static void main(String[] args)
	{
		MyThread thread = new MyThread();
		thread.start();

	}

}
3. 實現Callable介面,重寫call()方法。

首先比較Callable介面與Runnable介面的不同點:

(1)Callable可以在任務結束的時候返回一個值,Runnable無返回值;

(2)Callable中的call()方法可以丟擲異常,而Runnable的run()方法不能丟擲異常;

(3)執行Callable可以拿到一個Future物件,Future物件表示非同步計算的結果。

此方法實現多執行緒舉例:

 

import java.util.concurrent.*;
public class CallableAndFuture 
{
	//建立執行緒類
	public static class CallableTest implements Callable<String>
	{
		public String call() throws Exception
		{
			return "Ni Hao";
		}
		
	}
	public static void main(String[] args)
	{
		ExecutorService threadPool = Executors.newSingleThreadExecutor();
		//啟動執行緒
		Future<String>future = threadPool.submit(new CallableTest());
		try
		{
			System.out.println("wating thread to finish!");
			System.out.println(future.get());
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		
	}

}





相關文章