الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

هل إضافة عبارة التزامن Synchronized إلى الدالة يعتبر كافيا لمنع دخول عدة مسالك إليها ؟

بدأه rohaili في 23 أغسطس 2009 · 6 رد · 513 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بســم الله الـرحمــن الرحيــم

السلام عليكــم ورحمـة الله وبركاتــه ،،

مبارك عليكم بلوغ شهر رمضان . أسأل الله أن يعينني وإياكم فيه على طاعته كما يحب ويرضى ويتقبله منا .

في مشروع jsp ، يوجد صنف يحتوي على مجموعة من الدوال method الساكنة static ، ولا يوجد فيه أي متغير ، ولا أريد أن يدخل أي مسلك thread إلى الدالة إلا بعد خروج المسلك الأول ، مع إبقاء بقية الدوال دون قفل ، فهل إضافة عبارة التزامن synchronized إلى كل دالة يعتبر كافيا لمنع دخول عدة مسالك إلى الدالة دون التأثير على بقية الدوال في نفس الصنف ، مع العلم أن بعض الدوال تستدعي دوال أخرى في نفس الصنف أو في صنف آخر ؟

وجزاكم الله خيرا .

تم تعديل هذه المشاركة بواسطة rohaili في 23 أغسطس 2009 في 15:55

300_130.gif

#2

لأ طبعاً غير كافية للتوضيح عند تحويل أي دالة إلى synchronized فإن الذي يحصل إضافة ما بداخل الدالة إلى synchronization block

والقفل الخاص به يكون:

1- الكائن الحالي إذا كانت الدالة غير ثابتة non static

2- الكائن من الفئة Class لنفس الفئة الحالية في حال كون الدالة ثابتة static

للمزيد اقرأ الرابط التالي

http://www.herongyang.com/java/Synchroniza...nchronized.html

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#3

بســم الله الـرحمــن الرحيــم

السلام عليكــم ورحمـة الله وبركاتــه ،،

جزاك الله خيرا , لقد قرأت الصفحة التي في الرابط السابق وفهمت التالي :

يجب علي أن استخدم الطريقة التالية للمزامنة ، مع تمرير كائن وهمي للدالة ( أي كائن ) :


type method_name() {
synchronized (object) {
statement block
}
}
}
class class_name {

للأسباب التالية :

الدوال التي أريد مزامنتها ، عبارة عن دوال ساكنة static تضيف بيانات الى قاعدة البيانات أو تسترجعها ، ولا يوجد كائن أريد قفله ، أما إذا تم قفل الصنف كاملا فهذا يعني أن بقية المستخدمين سوف يحرمون من بقية الدوال ويصبح الموقع بطئ في الاستجابة .

هل هذا الحل صحيح أم لا ، وهل يوجد حل أفضل منه ؟

وجزاكم الله خيرا .

300_130.gif

#4

هل هذه الدوال لو نفذت مع بعض في نفس الوقت قد يحصل مشاكل corruption

في قاعدة البيانات عندها يجب عليك التفكير جيداً

ضع الصنف كاملاً

وأخبرني بآلية عمل الدوال

وسأساعدك في الموضوع

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#5

بســم الله الـرحمــن الرحيــم

السلام عليكــم ورحمـة الله وبركاتــه ،،

جزاك الله خيرا على تفاعلك مع الموضوع .

لا توجد أي مشكلة عند تنفيذ هذه الدوال كلها في نفس الوقت .

آلية عمل الدوال : إنشاء جدول , إضافة مستخدم ، عدة دوال إختيار ( مستخدم أو أحد أنواع البيانات ) ، التأكد من وجود اسم المستخدم .

وجزاك الله خيرا .

300_130.gif

#6

إذا استخدم الطريقة التالية

class class_name {
   static type method_name1() {
	  synchronized (object1) {
		 statement block
	  }
   }
   static type method_name2() {
	  synchronized (object2) {
		 statement block
	  }
   }

}

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#7

جزاك الله خيرا .

300_130.gif

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…