スレッド達成する方法
1スレッドクラスの継承単一継承、継承のスレッドクラスは、あなたが他のクラスから継承することはできません
2実行可能なインターフェイスは、戻り値複数のインタフェースを実装することができます実装する
スレッドFutureTaskパッケージでスレッドを作成するための3実現呼び出し可能インターフェースは、戻り値はありません
1つの パッケージcom.xiangxue.ch1。 2 3 インポートjava.util.concurrent.Callable。 4 インポートjava.util.concurrent.ExecutionException。 5 インポートjava.util.concurrent.FutureTask。 6 7 パブリック クラスNewThread { 8 / ** 9 *扩展自スレッド类 10 * @param 引数 11 * / 12 プライベート 静的 クラス MyThreadが延びスレッド{ 13 公共 ボイドラン(){ 14 System.out.println(「私はスレッドを拡張しています」); 15 } 16 } 17 18 / ** 19 *实现Runnableを接口 20 * @param 引数 21 * / 22 プライベート 静的 クラス UseRunが実装Runnableを{ 23 @Override 24 公共 ボイドラン(){ 25 のSystem.out.printlnは(「私はRunnableをimpelments;」); 26 } 27 } 28 29 / ** 30 返回值有*实现呼び出し可能接口、 31個の *の@paramの引数 32 * / 33 プライベート 静的 クラス UseCallが実装呼び出し可能の<string> { 34 35 @Override 36 パブリック文字列()の呼び出しがスロー例外{ 37 のSystem.out.println(「私はを呼び出し可能impelments;」); 38 リターン「CallResult」。 39 } 40 } 41 42 43 公共 静的 ボイドメイン(文字列[]引数)スローInterruptedExceptionある、ExecutionException { 44 = MyThread myThread 新しいMyThreadは(); 45 myThread.start()。 46 47 UseRunラン= 新しいUseRun(); 48 新しいスレッド(実行).start(); 49 50 UseCall useCall = 新しいUseCall(); 51 FutureTask <ストリング> futureTask = 新しい FutureTask <> (useCall)。 52 新しいスレッド(futureTask).start(); 53 のSystem.out.println(futureTask.get())。 54 } 55 56 }
打印信息
私はは拡張スレッド 私はimpelments Runnableをしていますが、 私は呼び出し可能impelmentsています。 CallResult