تقدم هذه المقالة قيودًا لتنفيذ متعددة الخيوط لمشكلات متعددة لتذاكر النوافذ ، وهما متزامنة ، قفل () وإلغاء القفل ()
الرمز المحدد كما يلي:
النوع الأول:
حزمة Runnable ؛ استيراد java.util.concurrent.locks.lock ؛ استيراد java.util.concurrent.locks.reentrantlock ؛ / * * Synchronization * هناك طريقتان للقفل * هنا: * 1.synchronized * 2.lock () و Unlock () */ public class myrunnable الأدوات runnable {private int tickets = 100 ؛ // تحديد قفل القفل الخاص = جديد reentrantlock () ؛ public void run () {بينما (صحيح) {// lock.lock () ؛ if (tickets> 0) {try {thread.sleep (100) ؛ } catch (interruptedException e) {// todo catch catch e.printstacktrace () ؛ } system.out.println (thread.currentThRead (). getName () + "sold" + (tickets--) + "Tickets") ؛ } lock.unlock () ؛ }}}نتيجة:
النوع الثاني:
حزمة Runnable ؛ / * * Synchronized * هناك طريقتان للقفل * هنا: * 1.synchronized * 2.lock () و Unlock () */ public class myrunnable الأدوات runnable {private int tickets = 100 ؛ public void run () {بينما (true) {synchronized (this) {if (tickets> 0) {try {thread.sleep (100) ؛ } catch (interruptedException e) {// todo catch catch e.printstacktrace () ؛ } system.out.println (thread.currentThRead (). getName () + "sold" + (tickets--) + "Tickets") ؛ }}}}}نتيجة:
حزمة Runnable ؛ الفئة العامة RunNableMo {public static void main (string [] args) {myrunnable myrunnable = new myrunnable () ؛ الموضوع T1 = مؤشر ترابط جديد (MyRunnable ، "Window One") ؛ الموضوع T2 = مؤشر ترابط جديد (MyRunnable ، "Window Two") ؛ الموضوع T3 = مؤشر ترابط جديد (MyRunnable ، "Window Three") ؛ t1.start () ؛ t2.start () ؛ t3.start () ؛ }}لا أعرف ما إذا كانت مصادفة أو شيء من هذا القبيل ، لكن عندما كنت أقوم بتشغيل هاتين حالتين صغيرتين متعدد الخيوط ، تعثر الكمبيوتر فجأة وسرعان ما أوقفت الكسوف.
هناك بيانات حول إنهاء العملية ولم تتم إضافتها ، يرجى الرجوع إليها بنفسك.
ما ورد أعلاه هو المحتوى الكامل لهذه المقالة حول مثال مشكلة توصيل النوافذ متعددة الخيوط Java. آمل أن يكون ذلك مفيدًا في الحملة. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة في أي وقت ونتطلع إلى تعليقاتك القيمة.