3つの方法のスレッドを作成します。
(1)Threadクラスの継承
(2)Runnableを実装
(3)呼び出し可能インタフェースを実装
コード例:
1、継承Threadクラス
1 パッケージcom.sxt.thread; 2 。3 / ** 4 * @ClassName StartThread 。5 *スレッド・システムの作成: 6 * 1.作成:スレッドを+継承RUNを上書き 。7 * 2.スタート:サブクラスオブジェクトスタート+を作成する 。8 * / 9 パブリック クラスは StartThread 延びている糸を{ 10 11 / ** 12である * @descriptionスレッドのエントリーポイント 13である * @date 2019年7月23日16時04分 14 * @Param [] 15 * @return 空隙 16 * * / 17 @Overrideは 18 公衆 ボイドRUN(){ 19。 ための(int型 I = 0; Iは、20 <であり; Iは++ ){ 20である ( "音楽を聴きながら"のSystem.out.println ;) 21である } 22である } 23である 24 公共 静的 ボイドメイン(文字列[]引数) { 25 // サブクラスオブジェクト作成 26 StartThread ST = 新しい新しいStartThreadを(); 27 //は開始 28 (st.startを); // 、すぐに実行することが保証CPUによって呼び出されていない 29 // )(st.run; // 共通メソッド呼び出し 30 のための(int型0 = I、I 20は、<; I ++は){ 31である のSystem.out.println( "コードライト側" ); 32 } 33 } 34 }
2、Runnableを実装
1 パッケージcom.sxt.thread; 2 。3 / ** 4 * @ClassName StartThread 。5 *糸道を作成する: 6 * 1.作成:Runnableを+リライタブルRUNを達成する 。7 * 2.スタート:スレッドオブジェクトを実装するオブジェクトクラスを作成+ +開始 8。 * 9 *推奨:優先インターフェース使用して、単一継承の制限を回避 10 *共有リソースを容易にする 。11 * / 12である パブリック クラス StartRun 実装Runnableを{ 13である 14 / ** 15 * @descriptionスレッドのエントリーポイントは 16 * 2019- @date 16:04 07から23 17 @Paramは、[] * 18である * @return空隙 19 * * / 20である @Override 21は 公共 ボイドRUN(){ である22 のために(int型、I 20は、<; I = 0 Iは++ ){ 23である のSystem.out.println( "音楽を聴きながら" ); 24 } 25 } 26である 27 パブリック 静的 ボイドメイン(文字列[]引数){ 28 / * 29 //は、実装クラスのオブジェクトを作成し 30 StartRun新しい新しいStartRun SRを=(); 31れる //プロキシクラスオブジェクトの作成 32を スレッド新しい新しいTスレッド(SR)を=; 33である //スタート 34 t.startは(); CPUを呼び出すことで、すぐに実行する保証はありません// 35 * / 36 // オブジェクトは一度だけ使用されている場合は、使用して作成することができ、匿名 37 新しい新しいスレッド(新しい新しいスタートStartRun())(); 38は // st.run(); // 一般的な方法は、コール 39 のために(int型 I = 0; I ++は、I 20は、< ){ 40 のSystem.out.println( "コードライト側" ); 41 } 42 } 43 }
要約:
例:
- ターゲットとするユーザーを作成します。IDownloader idは=新しいIDownloader( "ピクチャーアドレス"、 "baidu.png");
- +ターゲット・オブジェクトに関連付けられたスレッドオブジェクトの作成:スレッドt =新しいスレッド(ID)を。
- スレッドを起動します。t.startを()
3、呼び出し可能インターフェースを実装
1 パッケージcom.sxt.thread; 2 。3 インポート。java.util.concurrentの* ; 4 。5 / ** 6 *スレッド3を作成する方法を理解する:(JUC) 7。 *呼び出し可能インターフェイスメソッドをオーバーライド呼び出す実装 8 * 9 * / 10 パブリック クラス CDownloader 実装呼び出し可能<ブール> { 11 12である プライベート、文字列のURL // リモートパス 13は、 プライベート文字列名; // 店舗名 14 15 公衆CDownloader(URL文字列、文字列名){ 16 本する.url = URL; 17 この .nameの= 名前; 18 } 19 20 @Override 21 公共ブールコール()スロー例外{ 22 23 WebDownloader WD = 新しいWebDownloader()。 24 wd.download(URL、名); 25 のSystem.out.println( "图片名称" + 名)。 26 リターン 真。 27 } 28 29 公共 静的 ボイドメイン(文字列[]引数)スローExecutionException、InterruptedExceptionある{ 30 31 CDownloader CD1 = 新しい CDownloader( "https://res.vmallres.com/pimages/detailImg/2019/06/03/20190603145749911985.jpg"、 "20190603145749911985.jpg" )。 32 CDownloader CD2 = 新しい CDownloader( "https://res.vmallres.com/pimages/detailImg/2019/06/03/201906031457493181984.jpg"、 "201906031457493181984.jpg" )。 33 CDownloader CD3 = 新しい CDownloader( "https://res.vmallres.com/pimages/detailImg/2019/06/03/201906031457505691446.jpg"、 "201906031457505691446.jpg" )。 37 ExecutorServiceののSER = Executors.newFixedThreadPool(3 )。 38 // 3.提交执行: 39 フューチャー<ブール>結果1 = ser.submit(CD1)。 40 フューチャー<ブール>結果2 = ser.submit(CD2)。 41 将来<ブール> result3 = ser.submit(CD3)。 42 // 4获取结果: 43 ブール R1 = result1.get()。 44 ブール R2 = result2.get()。 45の ブール R3 = result3.get()。 46 のSystem.out.println(R3)。 47 // 5.关闭服务: 48 ser.shutdownNow(); 49 } 50 }