今日、友人が私にインタビューの質問をしてくれました。 5人の赤い封筒をつかむ5人がいました。それらは、マルチスレッドプログラムを使用して繰り返しつかんで実装することができます。それらを実装するには多くの方法があります。私のアイデアを共有したいのですが、ブロッキングキューの特徴が適用されます。
/*** 2016/6/23にZhanglinqiangによって作成されました。 */ public class mytest {public static void main(string [] args)throws arturnedexception {linkedblockingqueue <luckymoney> luckymoneys = new linkedblockingqueue <>(); List <FutureTask> FutureTasks = new ArrayList <>(); //(int i = 0; i <5; i ++){futuretask <object> futuretask = new futureTask <>(new CatchluckMoney(luckymoneys、 "name"+i)、null);新しいスレッド(futureTask、 "name"+i).start(); FutureTasks.Add(FutureTask); } thread.sleep(5); //赤い封筒をつかむスレッドが準備ができていることを確認してくださいランダム= new Random(100); //(int i = 0; i <5; i ++){luckymoneys.put(new luckymoney( "red envelope"+i、random.nextint(100)+1))の5つの赤い封筒を送信します。 } //赤い封筒がつかまれるまで待ってください(!luckymoneys.isempty()){shood.sleep(1); } //(FutureTask FutureTask:FutureTasks)のRed Envelope Grabスレッドを終了します{futuretask.cancel(true); }}} class CatchluckMoney Implements Runnable {public CatchluckMoney(LinkedBlockingQueue <Luckymoney> luckymoneys、string name){this.luckymoneys = luckymoneys; this.name = name; } private linkedblockingqueue <luckymoney> luckymoneys;プライベート文字列名; @Override public void run(){while(!thread.currentthread()。is interrupted()){luckymoney redpackage = null; try {redpackage = lucymoneys.take(); } catch(arturnedexception e){// e.printstacktrace();壊す; } system.out.println(name + "grabbed->" + redpackage); lackymoneys.remove(redpackage); } system.out.println( "end >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"+thread.CurrentThread()。getName()); }} class luckymoney {public luckymoney(string name、integer money){this.name = name; this.money = money; }プライベート文字列名;民間の整数のお金; @Override public String toString(){return "luckymoney {" + "name = '" + name +'/'' + "、money =" + money + '}'; }}ランニング効果:
ターゲットVMに接続されている、アドレス: '127.0.0.1:8869'、トランスポート: 'ソケット' name3 got-> luckymoney {name = 'red envelope 0'、money = 16} name4 get-> luckymoney {name = 'red envelope 3'、money = 89} name0 - > luckymoney {name = 'red envelope 1'、money = 51} name3 got-> luckymoney {name = 'red envelope 4'、money = 92} end>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。