بيئة تشغيل هذا البرنامج التعليمي: نظام Windows 7، إصدار Java 10، كمبيوتر DELL G3.
1. طريقة الحصول
يتم استخدام lock() وtryLock() وtryLock(long time, TimeUnit Unit) وlockInterruptible() جميعها للحصول على الأقفال.
( 1) طريقة القفل () هي الطريقة الأكثر استخدامًا للحصول على الأقفال . إذا تم الحصول على القفل بواسطة خيط آخر، فانتظر.
( 2) تحتوي طريقة TryLock() على قيمة إرجاع، مما يعني أنها تستخدم لمحاولة الحصول على القفل . إذا نجح الاستحواذ، فإنها تُرجع صحيحًا إذا فشل الاستحواذ (أي أن القفل قد تم الحصول عليه من قبل شخص آخر). Thread)، فإنه يُرجع خطأ، مما يعني أن هذه الطريقة تُرجع فورًا مهما حدث. لن تنتظر هناك عندما لا تتمكن من الحصول على القفل.
( 3) تشبه طريقة TryLock(long time, TimeUnit Unit) طريقة TryLock()، ولكن الفرق هو أن هذه الطريقة ستنتظر لفترة زمنية معينة عندما لا يمكن الحصول على القفل خلال المهلة الزمنية، فإنه يعود كاذبة. يُرجع صحيحًا إذا تم الحصول على القفل في البداية أو أثناء فترة الانتظار.
( 4) تعتبر طريقة lockInterruptible() خاصة عند الحصول على قفل من خلال هذه الطريقة، إذا كان الخيط ينتظر الحصول على القفل، فيمكن للخيط الاستجابة للمقاطعة، أي مقاطعة حالة انتظار الخيط. وهذا يعني أنه عندما يريد خيطان الحصول على قفل من خلال lock.lockInterruptible() في نفس الوقت، إذا حصل الخيط A على القفل في هذا الوقت، وكان الخيط B ينتظر فقط، فإن طريقة ThreadB.interrupt() هي تم استدعاؤه على الخيط B. يمكن أن يقاطع عملية انتظار الخيط B.
2.أمثلة
خذ تريلوك كمثال.
قفل القفل = ...; إذا (lock.tryLock()) { يحاول{ // معالجة المهام }catch(Exception ex){ }أخيراً{ lock.unlock(); // حرر القفل } }آخر { // إذا تعذر الحصول على القفل، فافعل أشياء أخرى مباشرة}
هناك العديد من الطرق المخزنة في واجهة Java لتسهيل الاتصال المباشر عند استخدام سلاسل الرسائل. الجميع على دراية بواجهة القفل، وقد حصلنا بالفعل على فهم أولي للمفهوم. لذا فإن طريقة الحصول على القفل لا يجب أن تكون واضحة تمامًا بعد.
ما ورد أعلاه هو الطرق الأربع للحصول على الأقفال في Java. بعد قراءة المقالة، يمكنك تقوية ذاكرتك وفهمك في هذا المجال. إذا كنت مهتمًا بطرق أخرى للحصول على الأقفال، فيمكنك أيضًا العثور على الرموز ذات الصلة للتدرب عليها بعد الفصل الدراسي.