この記事では、複数のウィンドウチケットの問題のマルチスレッド実装、つまり同期、lock()、およびlock()の2つのシャックルを紹介します。
特定のコードは次のとおりです。
最初のタイプ:
パッケージrunnable; java.util.concurrent.locks.lockをインポートします。 java.util.concurrent.locks.reentrantlockをインポートします。 / * * synchronization *ここにロックする2つの方法があります: * 1.SynChronized * 2.Lock()およびUnlock() */ public class myrunnable runnable {private int quickets = 100; // lock private lock = new ReentrantLock(); public void run(){while(true){// lock lock.lock(); if(チケット> 0){try {thread.sleep(100); } catch(arturnedexception e){// todo auto-fenated catch block e.printstacktrace(); } system.out.println(thread.currentthread()。getName() + "sall" +(chutchets-) + "quickets"); } lock.unlock(); }}}結果:
2番目のタイプ:
パッケージrunnable; / * * synchronized *ここにロックする2つの方法があります: * 1.SynChronized * 2.Lock()およびUnlock() */ public class myRunnable Implestion runnable {private intチケット= 100; public void run(){while(true){synchronized(this){if(chickets> 0){try {thread.sleep(100); } catch(arturnedexception e){// todo auto-fenated catch block e.printstacktrace(); } system.out.println(thread.currentthread()。getName() + "sall" +(chutchets-) + "quickets"); }}}}}結果:
パッケージrunnable; public class runnablememo {public static void main(string [] args){myrunnable myrunnable = new myRunnable();スレッドT1 =新しいスレッド(myRunnable、 "window one");スレッドT2 =新しいスレッド(myRunnable、 "window 2");スレッドT3 = newスレッド(myRunnable、 "window 3"); t1.start(); t2.start(); t3.Start(); }}それが偶然か何かなのかはわかりませんが、これらの2つのマルチスレッドの小さなインスタンスを実行していたとき、コンピューターは突然立ち往生し、すぐにEclipseをオフにしました。
プロセスの終了に関する声明があり、追加されていません。自分で参照してください。
上記は、Java Multi-Threaded Windowチケットの問題の例に関するこの記事の内容全体です。取り締まりに役立つことを願っています。ご質問がある場合は、いつでもメッセージを残して、貴重なコメントを楽しみにしてください。