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

synchronized and Serializable

مغلق
بدأه javaskills في 23 أبريل 2007 · 5 رد · 2,857 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مرحبا اخواني الاعزاء انا اريد فهم المصطلحين وما فائدتهم بشكل عميق

ومفصل ارجو من المتمكنين ان يردوا على هاذا السؤال

synchronized and Serializable

انا عندي فكره عامله عنهم بس حاب افهم بشكل متعمق وما استخداماتهم بشكل تفصيلي

وشكرا للإهتمام

#2

Synchronized

تخيل ان لديك الكلاس التالي :

class Account{
	private double  budget;
	void withdraw(int a){
		if(budget>=a) budget-=a;
	}
	//.other utility classes 
}

لديك اثنان يريدان سحب قيمة 100 ريال من الحساب ، والحساب حالياً budget=100

لديك two threads سيدخل الاول وليكن اسمه خالد ، وفي اثناء دخوله دخل الثاني وليكن اسمه سعد

الآن خالد وسعد كلهم متأكدين بان هناك قيمة بالحساب وسوف يقومان بسحب 100 ريال ، لكن المشكله انه عندما سحب خالد اصبح الرصيد صفر ، ولكن سعد توه داخل والنظام قايل له اوكي هناك رصيد سوف اسحب لك ، يتفاجأ سعد بان النظام يقوله لايوجد رصيد كافي ؟؟ والنظام قايله قبل شوي إنه يوجد رصيد

مالحل ؟

الحل هو انه عندما تدخل أي thread في المثد withdraw نجعل الرصيد ملك لهذه الthread وهو في مثالنا خالد

اي ثريد أخرى ( مثل سعد ) تريد ان تعمل withdraw نجعلها في waiting list وعندما ينتهي خالد نعمل nofity لها

synchronized withdraw(int i) {//plaplapla
}

كل اوبجكت في الجافا له lock خاص فيه ، لذلك اول مايدخل خالد synchronized method يأخذ الـlock لهذا الاوبجكت Account

ولايحق لأي أحد آخر سواءاً سعد أو أي thread أخرى ان تدخل أي synchronized block ، ولكن لها الحق ان تدخل any non-synchronized block

وبهذا تأكدنا أن سعد لن يرى قيمه ليس لها معنى ،

Serialization

الجافا تتيح لك حفظ الاوبجكت كـ أوبجكت وليس كأرقام أو Strings لايكن بينها صله

Serialization تستخدم لحفظ Object state واستراجعه ،

يمكنك حفظ أي اوبجكت بـ implement Serializable وعمل writeObject

ماذا لو تريد ان لاتحفظ بعض الattribute المهمه ، مثل password لاتريد ان تحفظه في الملف ، ؟

تخليه transient

ماذا لو كان أحد attribute عباره عن اوبجكت ثاني ، هل سيحفظ معك في الملف أم لا ؟

ماذا سيحصل عندما تعمل Deserialization أو تسترجع الاوبجكت ، ماذا سيحصل للinstance members

ماذا لو كان الاوبجكت تبعك هو subclass ، كيف تعمل Deserialization

حقيقة الموضوع هنا متشعب جداً ، لذلك لااستطيع تغطيته ،

هناك اكواد بسيطه لفهم هذا المفهوم ، ابحث عنها بقوقل

#3

رائع أخي عيسى بارك الله فيك...

#4

يسلمو اخوي عيسى كفيت ووفيت

وشكرا ويعطيك الف عافيه

#5

جزاك الله خير يا عيسى واسأل الله أن يبارك في علمكم ويزيدكم

شرح رائح بطريقة مبسطة :)

#6

الف شكر اخواني على هالاطراء

الله يوفق الجميع

هذا الموضوع مغلق.

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