方法の一つ:Threadクラスの継承、runメソッドをオーバーライドするには、直接startメソッドは、オープンスレッドと呼ばれています。
/ ** * Threadクラス、直接startメソッドが呼び出されたオープンスレッド継承。 * @Author LuRenJiaは、 * / パブリック クラスは LeaningThread 拡張スレッド{ 公共 空RUNを(){ のために(int型 I = 0; I <20であり; I ++ ){ System.out.printlnは(「Iおよびしかし、これは冷たいリピータで、それを何の問題では「ん?); } } 公共の 静的な 無効メイン(文字列[] args)を{ LeaningThread Ltを = 新しい新LeaningThread(); Lt.start(); } }
方法2:スタートThreadクラスを呼び出すことにより、Runableインタフェースを実装するrunメソッドをオーバーライドし、オープンスレッド。
/ ** *、Runnableインタフェースを達成するためのプロキシを介して、マルチスレッド * @author LuRenJia * / パブリック クラス LeaningRunnable 実装Runnableを{ 公共 ボイドRUN(){ 用(INT I = 0; I <20であり; I ++ ){ のSystem.out。 println(「しかし、これはそれをどうするか寒いですし、私のビデオマシン?」); } } 公共の 静的な 無効メイン(文字列[] args)を{ 新しい新しいスレッド(新しい新しいLeaningRunnable())スタート();. } }
この方法3は:、サービスExecutorServiceのクラスを作成し、Callablerインタフェース書き換えメソッド呼び出しを達成その提出方法開いているスレッドを呼び出し、そのシャットダウンメソッドを介してサービスをシャットダウンします。
/ ** *マルチスレッド実装するために呼び出し可能インタフェースを実装 * @author LuRenJia * / パブリック クラス LeaningCallable 実装呼び出し可能の<string> { プライベート文字列名を、 パブリックLeaningCallable(文字列名){ この .nameの= 名; } // オーバーライドメソッド呼び出し、実行のスレッドの内容は、getメソッドにより得られる戻り値 @Override パブリック文字列()の呼び出しがスロー例外{ ため(INT ; I <20であり; I = 0 I ++ ){ System.out.printlnは(名 + ":"、「+しかしそれは寒さだったと私はそれは問題ではない何リピータ?」)。 } 戻り名; } パブリック 静的 ボイドメイン(文字列[]引数){ LeaningCallable LC1 = 新しい新 LeaningCallable( "スレッド1" ); LeaningCallable LC2 = 新しい新 LeaningCallable( "二スレッド" ); LeaningCallable LC3 = 新しい新 LeaningCallable( "スレッド3" ); // 実行サービス作成 ExecutorServiceのサーバー= Executors.newFixedThreadPool(3 ); // に提出 フューチャー<文字列>結果1 = server.submit(LC1)を、 未来の <文字列>結果2 =server.submit(LC2); 今後の <文字列> result3 = server.submit(LC3); 試み{ 文字列のTEMP = result1.get(); // 値を返します するSystem.out.println( "戻り値は次のとおりです。" + TEMP ); } キャッチ(InterruptedExceptionあるE){ e.printStackTrace(); } キャッチ(ExecutionException E){ e.printStackTrace(); } // 近いサービス server.shutdown(); } }
ショートカットを作成します:すばやく簡単なスレッドを作成するためにラムダ式を使用。
/ ** *ラムダ式:実装する唯一の親クラスインターフェースメソッド、ラムダ式は、コードを簡略化するために使用することができる * 1標準形式: *() - > { * *} *等価2用具Aにインターフェースサブクラス。 * * Threadクラスの実装、Runnableインタフェースと、このインタフェース実装されるrunメソッドを持っています。 * @Author LuRenJia * * / パブリック クラスLeaningLambda2 { 公共 静的 ボイドメイン(文字列[]引数){ 新しい新しいスレッド(新しい新しいRunnableを(){ @Override 公共 ボイドRUN(){ 用(INT I = 0; I <100; I ++ ){ System.out.printlnは(「しかし、これは寒さと私のビデオのマシン、それをどうするか?」); } } ;})スタート()。 // 素早く簡単なスレッドの作成に使用するラムダ式 新新(()スレッド- > { のために(int型を 0 = I; I <100; I ++ ){ System.out.printlnは( "私の知識、それは盲目に触れた!" ); } })スタート();. } }