مرحبا اخواني الاعزاء انا اريد فهم المصطلحين وما فائدتهم بشكل عميق
ومفصل ارجو من المتمكنين ان يردوا على هاذا السؤال
synchronized and Serializable
انا عندي فكره عامله عنهم بس حاب افهم بشكل متعمق وما استخداماتهم بشكل تفصيلي
وشكرا للإهتمام
مرحبا اخواني الاعزاء انا اريد فهم المصطلحين وما فائدتهم بشكل عميق
ومفصل ارجو من المتمكنين ان يردوا على هاذا السؤال
synchronized and Serializable
انا عندي فكره عامله عنهم بس حاب افهم بشكل متعمق وما استخداماتهم بشكل تفصيلي
وشكرا للإهتمام
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
حقيقة الموضوع هنا متشعب جداً ، لذلك لااستطيع تغطيته ،
هناك اكواد بسيطه لفهم هذا المفهوم ، ابحث عنها بقوقل
رائع أخي عيسى بارك الله فيك...
يسلمو اخوي عيسى كفيت ووفيت
وشكرا ويعطيك الف عافيه
جزاك الله خير يا عيسى واسأل الله أن يبارك في علمكم ويزيدكم
شرح رائح بطريقة مبسطة :)
الف شكر اخواني على هالاطراء
الله يوفق الجميع
هذا الموضوع مغلق.