Deadlock هو خطأ على مستوى نظام التشغيل وهو اختصار للعملية Deadlock. تم اقتراحه لأول مرة من قبل Dijkstra عند دراسة خوارزميات Banker في عام 1965. إنها واحدة من أصعب المشكلات في أنظمة تشغيل الكمبيوتر وحتى مجال البرمجة المتزامنة بالكامل.
في الواقع ، هناك العديد من الأشياء في عالم الكمبيوتر والتي تحتاج إلى حلها من خلال خيوط متعددة ، لأنه بهذه الطريقة ، يمكن استخدام الموارد لزيادة كفاءة الحوسبة. ومع ذلك ، في الواقع ، هناك العديد من المواقف في أنظمة الكمبيوتر حيث لا يمكن استخدام الموارد إلا من خلال عملية واحدة في وقت واحد ، مثل الطابعات ، ويمكن لعملية واحدة فقط التحكم فيها في نفس الوقت. في بيئة برمجة متعددة القنوات ، غالبًا ما تشترك العديد من العمليات في مثل هذه الموارد ، وقد تتطلب العملية أكثر من مورد واحد. لذلك ، سوف تتنافس العديد من العمليات على موارد محدودة وسيكون ترتيب التقدم بشكل غير صحيح ، وبالتالي تشكيل حالة انتظار دورة غير محددة. نحن نسمي هذه الدولة deadlock. وببساطة ، يشير Deadlock إلى موقف يدور فيه عمليات متعددة من خلال الموارد التي يشغلونها وتبقى في طريق مسدود إلى أجل غير مسمى. من الواضح ، إذا لم تكن هناك قوة خارجية ، فسيتم دائمًا حظر جميع العمليات التي تنطوي عليها Deadlock.
اسم الملف: deadthreadbyextend.java
ملحوظة:
1. عند بدء تشغيل موضوع ، يمكن استخدام طريقة البدء. يمكن أيضًا استدعاء طريقة التشغيل ، ولكنها تعادل فقط مكالمة طبيعية وتنفيذها في الخيط الحالي.
2. المزامنة لا يمكن تعديل المتغيرات مباشرة.
3. لا تجبر الكتلة المتزامنة الوصول إلى المتغيرات في الكتلة. وهذا يعني ببساطة أن المعلمة (ARGS) المتزامنة يتم قفلها عند تنفيذ البيانات داخل الكتلة ولا يتم إصدارها حتى يتم الانتهاء من التنفيذ.
package com.ycf.study.throad ؛ مصادر الفئة {int a ؛ public void seta (int x) {synchronized (this) {this.a = x ؛ try {thread.sleep (2000) ؛} catch (interruptedException e) {e.printstacktrace () ؛ {المصادر S1 = مصادر جديدة () ؛ المصادر S2 = مصادر جديدة () ؛ فئة MyThread1 تمتد java.lang.thread {Override public void run () {system.out.println ("الموضوع 1 يبدأ") ؛ متزامن (s1) {system.out.println ( S1 ") ؛ s1.seta (20) ؛ system.out.println (" Thread 1 يخرج ويصدر قفل +++++++++++++++++ ") {system.out.println ("مؤشر الترابط 2 ينطبق على تعديل s2") ؛ s2.seta (20) ؛ system.out.println ("Thread 2 Changes S2 COMMANT") ؛ System.out.println ("Thread 2 ينطبق على Modify S1") ؛ s1.seta (10) يطلق القفل +++++++++++++++ ") ؛}} mythread1 mt1 = new MyThread1 () ؛ mythread2 mt2 = new MyThread2 () ؛ mt1.start () ؛ mt2.start () ؛}}لخص
ما ورد أعلاه هو كل شيء عن مثال رمز قتلة Java في هذه المقالة ، وآمل أن يكون مفيدًا للجميع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع.