Atomic عبارة عن مجموعة أدوات من فئات الحزم المتغيرة في برمجة الجافا، والتي تساعد في كتابة خوارزميات القفل والانتظار مع لغة Java.
الخوارزمية التي تتطلب خيوط جزئية فقط للتقدم المستمر تكون خالية من القفل. في خوارزمية خالية من الانتظار، تحرز جميع سلاسل العمليات تقدمًا بشكل مستمر، حتى في حالات فشل مؤشر الترابط أو التأخير.
تُعرف خوارزميات القفل والانتظار أيضًا باسم خوارزميات nonblocking. تُستخدم الخوارزميات غير المحجوبة للعملية وجدولة مؤشرات الترابط في نظام التشغيل ومستويات آلة جافا الافتراضية.
شرح (Atomic) في برمجة الجافا.
تحتوي جميع فئات حزم java.util.concurrent.atomic على بادئة “atomic” في أسمائها. هناك أنواع مختلفة من المتغيرات الذرية المتوفرة في الحزمة java.util.concurrent.atomic، بما في ذلك:
- AtomicBoolean
- AtomicInteger
- AtomicIntegerArray
- AtomicIntegerFieldUpdater
- AtomicLong
- AtomicLongArray
- AtomicLongFieldUpdater
- AtomicReference
في لغة Java، تنسق المزامنة الوصول إلى حقول الخيط المشتركة وتسمح فقط للخيوط التي تحمل أقفالًا بالوصول إلى المتغيرات المحمية بالقفل وتعديلها.
تكون تعديلات هذا الموضوع مرئية للخيط التالي، ولكن فقط بعد أن يحرر الخيط القفل. مثال على ذلك هو سيناريو حيث الخيط أ يحمل قفل.
A قادر فقط على الوصول وإجراء التغييرات على المتغيرات المحمية بواسطة هذا القفل. إذا احتفظ الخيط B بهذا القفل بعد A، فعندئذٍ يمكن لـ B فقط عرض تغييرات A على المتغيرات المحمية بواسطة هذا القفل المحدد.
تحدث المشكلة الرئيسية في القفل عندما يحاول B الحصول على قفل يحمله A. في هذه الحالة، يتم حظر B للانتظار حتى يتوفر القفل.
الخوارزميات غير المحظورة تحل هذه المشكلة. الغرض الرئيسي من بناء الفئات الذرية هو تنفيذ هياكل البيانات غير المحظورة وفئات البنية التحتية ذات الصلة.
لا تعمل الفئات الذرية كبدائل لـ java.lang.Integer والفئات ذات الصلة. تستخدم معظم فئات الحزم java.util.concurrent المتغيرات الذرية بدلاً من المزامنة، سواء بشكل مباشر أو غير مباشر.
يتم استخدام المتغيرات الذرية أيضًا لتحقيق إنتاجية أعلى، مما يعني أداء خادم تطبيق أعلى.