Java යෙදුම් වල එකම වස්තුවට එකවර ත්රෙඩ් බහුලව ප්රවේශ වීමේදී දත්ත ගැලපීම, අසමතුලිත තත්ත්වයන් වැනි ගැටළු මතු වෙයි. එවැනි අවස්ථා වල ‘synchronized’ යන කීවර්ඩ් එක මූලික ආරක්ෂක වගකීම ඉටු කරයි.
synchronized යනු මූලික වශයෙන් ක්රම (method) හෝ කේත කොටසක් (block) එකක් එක ත්රෙඩ් එකක් පමණක් ක්රියාත්මක වන ලෙස පාලනය කරන ආකාරයකි. මෙය Java වල object‑level lock (monitor) භාවිතා කරයි; lock එක ලබා ගත් ත්රෙඩ් එකම ඒ කොටස ක්රියාත්මක කර, අනෙකුත් ත්රෙඩ් ගණනාව lock මුදා හරින තුරු රැඳී සිටී.
උදාහරණයක් ලෙස බැංකු ගිණුමක් ගැන සලකන්න. ගිණුමක ශේෂය රුපියල් 10,000ක් වන අතර, දෙදෙනා එකවර රුපියල් 7,000ක් ඉවත් කිරීමට උත්සාහ කරනවා. සින්ක්රොනයිසේෂන් නොමැතිව දෙදෙනාම ශේෂය 10,000 ලෙස කියවා, දෙදෙනාම ඉවත් කිරීමේ ක්රියාව සම්පූර්ණ කරයි. එවිට ශේෂය -4,000ක් වැනි වැරදි ප්රතිඵල ලැබේ.
‘synchronized’ භාවිතා කළහොත්, පළමු ත්රෙඩ් එක lock ගනිමින් ඉවත් කිරීමේ ක්රියාව සම්පූර්ණ කරයි; දෙවන ත්රෙඩ් එක lock මුදා හරින තුරු රැඳී සිටී. එවිට ශේෂය 3,000ක් ලෙස නිවැරදිව අඩු වේ.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලංකාවේ තාක්ෂණික උපාධි පුරවැසි, start‑up සංවර්ධකයින්, සහ ව්යාපාරිකයන්ට Java multithreading යෙදුම් නිර්මාණය කිරීමේදී ‘synchronized’ අවබෝධය අත්යවශ්ය වේ. මෙය:
- ඉලෙක්ට්රොනික ගබඩා, මූල්ය සේවා, e‑commerce වැනි ක්ෂේත්රවල දත්ත අස්ථිරතාවය වැලැක්වීමට උපකාරී වේ.
- ශ්රී ලංකාවේ ඉගෙනුම් ආයතන තුළ Java පාඨමාලාවල ප්රායෝගික උදාහරණ ලෙස භාවිතා කළ හැකිය.
- විකාශකයින්ට ආරක්ෂිත API නිර්මාණය කර, පාරිභෝගික විශ්වාසය වැඩි කරන ව්යාපාරික අවස්ථා නිර්මාණය කරයි.
අපේ දේශීය සොෆ්ට්වේයාර් සමාගම් multithreaded සේවාදායක (server) හෝ මයික්රො සේවා (microservices) නිර්මාණය කරන විට, ‘synchronized’ මගින් race condition වළක්වා, පද්ධතියේ ස්ථාවරතාවය සහ පරිශීලක අත්දැකීම උසස් කරයි.
Java හි synchronized method සහ block භාවිතයේ වාසි හා අවාසි පරීක්ෂා කර, කේතයෙහි අවශ්ය පරිමාණයේ lock පාලනය කිරීමේ කුසලතාවය වැඩිදියුණු කළ හැකිය. මෙය interview ප්රශ්නවලත් නිතර පෙනෙන නිසා, නව උපාධිධාරීන්ට පූර්ණ අවබෝධයක් ගත යුතුය.
අවසන් වශයෙන්, ‘synchronized’ යනු Java multithreading හි අත්යවශ්ය පදක්කමක් වන අතර, නිවැරදිව භාවිතා කිරීමෙන් ඔබේ යෙදුම් ආරක්ෂිත, නිරවද්ය, සහ විශ්වාසනීය වේ.