使用Stackクラスは、生産者と消費者を実装します
1つの パッケージcom.imooc.demo。 2 3 輸入java.util.Randomの。 4 インポートjava.util.Stackを。 5 //生产者 6 パブリック クラス StackOOPS 実装のRunnable { 7 8 プライベートスタック<整数> スタック。 9 公衆 StackOOPS(スタック<整数> スタック){ 10 この .STACK = スタック。 11 } 12 13 @Override 14 公共 ボイドラン(){ 15 ランダムランダム=新しいランダム(); 16 一方(真){ 17 であれば(stack.size()<6 ){ 18 INT NUM = にRandom.nextInt()。 19 stack.push(NUM)。 20 のSystem.out.println(にThread.currentThread()のgetName()+ "生产了:" +。NUM)。 21 } 他{ 22 のtry { 23 のThread.sleep(100 )。 24 } キャッチ(InterruptedExceptionある電子){ 25 e.printStackTrace(); 26 } 27 } 28 } 29 } 30 }
1つの パッケージcom.imooc.demo。 2 3 インポートjava.util.Stackを。 4 //消费者 5 パブリック クラス StackOOPCは実装のRunnable { 6 7 プライベートスタック<整数> スタック。 8 9 公共 StackOOPC(スタック<整数> スタック){ 10 この .STACK = スタック。 11 } 12 @Override 13 公共 ボイドラン(){ 14 ながら(真){ 15 もし(stack.size()> 0 ){ 16 整数NUM = stack.pop()。 17 のSystem.out.println(にThread.currentThread()のgetName()+ "消费了:" +。NUM)。 18 } 他{ 19 のtry { 20 のThread.sleep(200 )。 21 } キャッチ(InterruptedExceptionある電子){ 22 e.printStackTrace(); 23 } 24 } 25 } 26 } 27 }
1 パッケージcom.imooc.demo; 2 。3 インポートjava.util.Stackを、 4 。5 / ** 6 *クラスのスタックを用いる 。7 * / 8 パブリック クラスStackTest { 9 パブリック 静的 ボイドメイン(文字列[]引数){ 10 スタック<整数> = S 新しい新しいスタック<> (); 11 StackOOPSのstackOOPS = 新しい新しいStackOOPS(S)、 12は stackOOPC stackOOPC = 新しい新しいstackOOPC(S)、 13は // 開放2つのプロデューサ 14 の新しい新スレッド(stackOOPC).start(); 15 新しい新しいスレッド(stackOOPS).start(); 16 // 消費者を開き 17。 新しい新しいスレッド(stackOOPS).start(); 18れる } 19 }