マルチスレッドの三つの方法:継承Threadクラスは、Runnableを達成するために、呼び出し可能インターフェースを実装します

マルチスレッドを実現する3つの方法:

1、継承スレッドは、スレッドを開始するstart()メソッドを呼び出し、run()メソッドをオーバーライドします。

図2に示すように、対応するスレッドに新しいスレッド(Runnableをターゲット).start()メソッドを起動し、run()メソッドを実装する、のRunnableを実装します。

3、FutureTaskを呼び出し()メソッドを実装するラッパー、および呼び出し()メソッドが値を返す、あなたが例外をスローすることができます使用して呼び出し可能インターフェースを実装します。

1  // 实现呼び出し可能接口
2  クラステスト実装呼び出し可能<整数> {
 3  
4      @Override
 5      パブリック整数コール()はスロー例外{
 6          リターン 1024 7      }
 8 }

差呼び出し可能インタフェース、Runnableインタフェース。

(1)の戻り値があるか否か

(2)例外か否か

(3)A法は、RUNは、同じではない達成する際に呼び出しメソッド

 

マルチスレッドの実装呼び出し可能インターフェースを実装します。

1つの インポートjava.util.concurrent.Callable。
2  インポートjava.util.concurrent.ExecutionException。
3  インポートjava.util.concurrent.FutureTask。
4  
5  パブリック クラスThreadPro {
 6      パブリック 静的 ボイドメイン(文字列[]引数)がスローExecutionException、InterruptedExceptionある{
 7          テストテスト= 新しいテスト();
8          FutureTask futureTask = 新しいFutureTask(テスト)。
9          新しいスレッド(futureTask、 "A线程" ).start();
10         System.out.println( "......" );
11          のSystem.out.println(futureTask.get())。
12      }
 13  }
 14の 
15  // 实现呼び出し可能接口
16  クラステスト実装呼び出し可能<整数> {
 17  
18      @Override
 19      公衆整数コール()がスロー例外{
 20          のSystem.out.println( "HELLO!......" );
21          リターン 1024 ;
22      }
 23 }

 

Threadクラス呼び出し可能インターフェースに直接なしコンストラクタは、パッケージfutureTask呼び出し可能インターフェース・クラスのコンストラクタを備え、実装、Runnableインタフェースを使用する必要があります。

 

 引入Callable接口具有哪些好处:
(1),可以获得任务执行返回值;
(2),通过与FutureTest的结合,可以实现利用FutureTest来跟踪异步计算的结果。并且多个线程执行同一个类的call方法,只会被执行一次,因为返回值已经保存记住了。

 

おすすめ

転載: www.cnblogs.com/fangtingfei/p/12020772.html