麺スナックストリート販売銅の鍋の上司のようなマルチスレッドいわゆる同時に5人の顧客が麺を購入する場合、上司は、オペレーティングシステムのようなものです、そして、この時点でボスを同時にしながら、準備ができて5つの銅の鍋も、その後入れます水、香辛料、米麺、そして5人は麺のために料理、一つ一つの料理であれば、その後、上司の還付に来て3人の後ろに、推定2人が麺料理。
公式の説明:マルチスレッド(英語:マルチスレッド)は、ソフトウェアまたはハードウェアから複数のスレッドの同時実行の技術的実現を指し、
4つのステップは、Javaでマルチスレッド実装します:
(1)、書き込みが実行可能なクラス(runメソッド)を実装するマルチスレッド実行ロジック方法を使用する必要があります。
(2)は、このオブジェクトクラスを達成する実行可能作成します。
(3)このオブジェクトのn実行可能なスレッドのスレッドで構成されています。
(4)これらのn開始スレッド(Thread.start())。
1.マルチスレッドの場合
テストカテゴリ:Demo1.java
パッケージcn.test.logan.day13; / ** *マルチスレッドテストクラス1 * @author QINは * * / パブリック クラス DEMO1 実装Runnableを{ @Override 公共 ボイドRUN(){ 用(INT I = 0; I <= 2 ; I ++ ){ するSystem.out.println( "DEMO1スレッド- " + I + "**********" ); } } }
テストカテゴリ:Demo2.java
パッケージcn.test.logan.day13; / ** *マルチスレッド試験クラス2 * @author QIN * * / パブリック クラス DEMO2 実装Runnableを{ @Override 公共 ボイドRUN(){ 用(INT I = 0; I <= 5 ; I ++ ){ するSystem.out.println( "DEMO2スレッド" + I + "----------" ); } } }
マルチスレッドテストカテゴリ:ThreadDemoの.java
パッケージcn.test.logan.day13。 パブリック クラスThreadDemo { 公共 静的 ボイドメイン(文字列[]引数){ DEMO1 DEMO1 = 新しいDEMO1()。 DEMO2 DEMO2 = 新しいDEMO2(); // 构造一个线程、指定要执行的逻辑 スレッド1 =スレッド新しいスレッド(DEMO1を)。 スレッド2スレッド = 新しいスレッド(DEMO1を)。 thread3スレッド = 新しいスレッド(DEMO1を)。 thread4スレッド = 新しいスレッド(DEMO2を)。 スレッドthread5 =新しい新しいスレッド(DEMO2); // マルチスレッド方法の開始におけるこれら5つのスレッド thread1.start(); thread2.start(); thread3.start(); thread4.start(); thread5.start(); } }
結果:
2.オブジェクトがのRunnableにデータを渡します
実際には、我々は時々、特定のコードは次のとおり、この時点では、コンストラクタを完了するために使用することができる、動的なオブジェクトに転送データにする必要があります。
マルチスレッドテストコード:ThreadDem.java
パッケージcn.test.logan.day13; パブリック クラスThreadDemo { 公共 静的 ボイドメイン(文字列[]引数){ DEMO1 DEMO1 = 新しい新 DEMO1( "ジョン・ドウ"); DEMO1 demo12 = 新しい新 DEMO1( "ジョン・ドウ"); DEMO1 demo13 = 新しい新 DEMO1(「王呉」); DEMO2 DEMO2 = 新しい新しいDEMO2(); //は、スレッドを作成、実行するためのロジックを指定する スレッドスレッド1 = 新しい新しいスレッド(DEMO1)を、 スレッドスレッド2 = 新しい新しいスレッド(demo12); 糸thread3 = 新しい新しいスレッド(demo13)。 Thread4スレッド = 新しい新しいスレッド(DEMO2); thread5スレッド = 新しい新しいスレッド(DEMO2を); // マルチスレッド方式の開始におけるこれら5つのスレッド thread1.start(); thread2.start(); thread3.start(); thread4。開始(); thread5.start(); } }
テストクラス1:Demo1.java
パッケージcn.test.logan.day13。 / ** *多线程测试类1 * @author QIN * * / パブリック クラス DEMO1の実装のRunnable { プライベート文字列名; 公共DEMO1(文字列名){ スーパー(); この .nameの= 名前; } @Override 公共 ボイドラン(){ 用(INT I = 0; I <= 2; I ++ ){ するSystem.out.println( "DEMO1中的线程- " + 名)。 } } }
テストカテゴリ2:Demo2.java
パッケージcn.test.logan.day13; / ** *マルチスレッド試験クラス2 * @author QIN * * / パブリック クラス DEMO2 実装Runnableを{ @Override 公共 ボイドRUN(){ 用(INT I = 0; I <= 5 ; I ++ ){ するSystem.out.println( "DEMO2スレッド" + I + "----------" ); } } }
テスト結果: