Java වල multithreading අධ්යයනයේ නවකයන් බොහොමයක් API ගොඩක්ම මත පදනම්ව ඉගෙනීමට උත්සාහ කරයි. Thread එකක් කොහොමද සෑදෙන්නේ, Runnable එකේ භාවිතය, synchronized හා ReentrantLock අතර වෙනස, AQS යනු කුමක්ද යන ප්රශ්නවලට පිළිතුරු දැනගෙන, ඒවා ඇයි, කවදා භාවිතා කළ යුතුද යන අර්ථය නොදැනීමේ ගැටළුවක් පවතී.
මෙම ලිපියෙන් පෙන්වන්නේ, concurrency ඉගෙනීමේ හොඳම ක්රමය API වලින් ආරම්භ නොකර, ව්යාපාරික අවශ්යතා මත පදනම් වූ ප්රශ්න වලින් ආරම්භ කිරීමයි. පළමුව, කැමැත්තක් ඇයි? යන ප්රශ්නයට පිළිතුරක් ලෙස, එකම ත්රෙඩ් එකෙන් සම්පූර්ණ order workflow එක ක්රියාත්මක කළහොත්, ඉන්වෙන්ට්රි අඩු කිරීම, order සෑදීම, ගෙවීම් සැකසීම, SMS යැවීම වැනි සියලු පියවරත් එකවර ඉවසිය යුතු වේ. මෙය පරිශීලක ප්රතිචාර කාලය වැඩි කරයි.
කෙසේ වෙතත්, SMS යැවීම, ලොග් සටහන් කිරීම, පරීක්ෂණාත්මක සංඛ්යා ලේඛන යාවත්කාලීන කිරීම වැනි පියවරවලට real‑time blocking අවශ්ය නොවේ. ඒවා පසුබැසි ත්රෙඩ් වලට මාරු කර asynchronous ලෙස ක්රියාත්මක කළහොත්, පද්ධතියේ ප්රතිචාර වේගය වැඩි වේ. තවත් වැදගත් හේතුවක් නම්, බහු‑කෝර් CPU (8, 16, 32 cores) වල සම්පූර්ණ ශක්තිය භාවිතා කිරීමයි. වැඩක් කුඩා කුඩා ස්වතන්ත්ර කොටස් වලට බෙදා, ඒවා එකවර ත්රෙඩ් කිහිපයක් මඟින් ක්රියාත්මක කළහොත්, CPU resource utilization ඉහළ යයි.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලංකාවේ තරුණ developers, විශ්වවිද්යාල සිසුන්, ආයතනික IT වෘත්තීන්ට මෙය විශාල වාසියක්. ප්රථමයෙන්, concurrency concepts පළමු මට්ටමෙන්ම ප්රශ්න‑අධාරිත ලෙස ඉගෙනීම නිසා, real‑world project වලට සෘජුවම යෙදිය හැකිය. එමඟින් කාලය හා සම්පත් ඉතිරි කර, වැඩි throughput සහ scalability ඇති සේවා නිර්මාණය කළ හැක.
- ඉගෙනුම් කාලය කෙටි වේ – API මත මතකය නොව, අවශ්යතාවය මත පදනම්ව ක්රියා කරන හැටි ගැඹුරු ලෙස තේරුම් ගත හැක.
- කොඩ් ගුණාත්මකභාවය වැඩිවේ – atomicity, visibility වැනි ගැටළු හඳුනාගෙන, synchronized හෝ Lock වැනි නිවැරදි මෙවලම් තේරීමේ හැකියාව ලැබේ.
- දේශීය ව්යාපාර වලට කාර්යක්ෂම server architecture එකක් ගොඩනැගීමට මාර්ගෝපදේශයක් වේ, ඉන් පසු ආර්ථික වර්ධනයට දායක වේ.
අවසන් වශයෙන්, concurrency යනු “තවත් ත්රෙඩ් එකක් එකතු කිරීම” නොව, “හොඳම විසඳුම තෝරා ගැනීම” යන අදහසයි. ප්රශ්න මත පදනම්ව ඉගෙනීම, ඔබේ Java කුසලතා ඉහළ ගෙනයයි, සහ අනාගතයේ high‑performance applications නිර්මාණයට මූලික පදනමක් සපයයි.