Skip to main content

Thread Safety

Is a static method thread safe? Is a static method a bottleneck?

First, let’s go shopping.

Let’s say I take a grocery cart of 10 items into a checkout lane at my local grocery store. The clerk takes each item from my cart and computes a total cost for all the items. Unless there was a human error (or an item was priced incorrectly), we would expect the clerk’s cash register to compute the correct total.

The clerk is like a thread. Like a thread in an application, the clerk executes a set of instructions to compute the total cost of my grocery items. The clerk will process one cart of items at a time, and each will make use of a cash register to tally the items.

Now picture a different scenario. Picture 5 checkout lanes, each lane with one clerk, but only one shared cash register for the entire store. If multiple clerks are ringing up items on the shared cash register for different shoppers at the same time, nobody will receive the correct total. My clerk might ring up two items and then pause for a second, which allows a second clerk to come in and add another shopper’s item to the current list in the cash register. The total cost for items in my cart would be incorrect. This is an analogy of what can happen if a method is not thread safe – corrupted data.

The solution to the shared cash register problem is to ensure a clerk will have exclusive possession of the single cash register while totaling my order. No other clerks are allowed to use the register until my 10 items are finished. These steps will produce the correct results, but as you might imagine, it can make for long lines at the checkout. Everyone is waiting on this one cash register to come free. This is an analogy of what can happen to the scalability of an application when threads are locked while waiting for a shared resource.

There is a delicate balance to strike when writing code that is both high performance and thread safe with shared resources.

Comments

Popular posts from this blog

ഗുരു ദേവോ ഭവ:

ഇ ന്ന് ദേശീയ അധ്യാപക ദിനം. അധ്യാപകനും രാഷ്ട്രപതിയുമായിരുന്ന ഡോ.എസ് രാധാകൃഷ്ണന്‍റെ പിറന്നാള്‍ ദിനമാണ് അധ്യാപക ദിനമായി നാം ആചരിക്കുന്നത്. ഈ ഒരു സുദിനത്തില്‍ ഈയൊരു അധ്യാപകനെ സ്മരിച്ചില്ലെങ്കില്‍ അതൊരു നന്ദികേടായി പോവും.  ഓര്‍മ്മക്കുറിപ്പിലേക്ക് കടക്കുന്നതിനു മുന്‍പൊരു ഡിസ്ക്ലെയിമര്‍. ബാദ്ധ്യതാ നിരാകരണം ഒടുക്കം മാത്രം നടത്തുന്നതാണ് ആചാരം. എങ്കിലും, അതു താനല്ലയോ ഇതെന്ന് ചുമ്മാ കല്‍പ്പിച്ചു കൂട്ടി എന്തിനുമേതിനും വ്രണപ്പെടുന്നൊരു സമൂഹത്തില്‍, അവകാശപരിത്യാഗം ആദ്യം തന്നെ നടത്തുകയെന്ന ആചാരലംഘനമാവും ഉചിതം. അതെ, ഇനി ഇവിടെ പറയാന്‍ പോവുന്നതൊരു മിത്ത് മാത്രമാണു. എന്ന്? എവിടെ? എത്രത്തോളം? നടന്നുവെന്നതിനൊന്നും ഇവിടെയൊരു പ്രസക്തിയില്ല. പതിറ്റാണ്ടുകളായി കേരളത്തിലെ പലപല കോളേജുകളും ഇതെന്‍റെ ഗര്‍ഭമാണെന്ന അവകാശവാദവുമായി എത്തിയിട്ടുണ്ടു. സത്യം ആര്‍ക്കറിയാം! ഒരു കാര്യം മാത്രം എനിക്കു തറപ്പിച്ചു പറയാം, എന്‍റെ ഗര്‍ഭം ഇങ്ങിനെയല്ല. അതുകൊണ്ടു തന്നെ ഈ കഥയിലെ കഥാപാത്രങ്ങളും കഥാപരിസരവും സാങ്കല്‍പ്പികം മാത്രമാണു, മറിച്ച് തോന്നുന്നെങ്കില്‍ അതു കയ്യിലിരിപ്പിന്‍റെ ഗുണം

മലയാളത്തില്‍ മൊത്തം എത്ര അക്ഷരങ്ങള്‍ ഉണ്ട്?

മലയാളത്തെ മറന്നവര്‍ക്കും മറന്നെന്നു നടിക്കുന്നവര്‍ക്കും ഒന്നോര്‍മ്മ പുതുക്കാന്‍ അക്ഷരമാലയെ രാജേഷ്‌ ഇവിടെ എടുത്തെഴുതുന്നു..... http://chayilyam.com/miscellaneous/personal/%E0%B4%A4%E0%B5%8B%E0%B4%A8%E0%B5%8D%E0%B4%A8%E0%B5%8D%E0%B4%AF%E0%B4%BE%E0%B4%95%E0%B5%8D%E0%B4%B7%E0%B4%B0%E0%B4%99%E0%B5%8D%E0%B4%99%E0%B4%B3%E0%B5%8D%E2%80%8D

കൈപ്പത്തി

പുറത്ത് നിര്‍ത്താതെ നിലവിളിക്കുന്ന ഫയര്‍ അലാറം കേട്ടിട്ട് പേടിയൊന്നും തോന്നിയില്ല. ആവശ്യമുള്ളപ്പോഴൊന്നും  ഒരലാറവും മുന്നറിയിപ്പ് തന്നിട്ടില്ല, ഇതും മോക്ക്‌ ഡ്രില്ലാവാനെ തരമുള്ളൂ. ബോയിലര്‍ റൂമില്‍ കേറി, പ്രശ്നങ്ങളൊന്നുമില്ല എന്നുറപ്പു വരുത്തിയിട്ട് പുറത്തേക്കിറങ്ങി. അസംബ്ലി പോയന്‍റില്‍ ഏതാണ്ടെല്ലാവരും എത്തിയിട്ടുണ്ട്. അരികെയുള്ളോരു  മരച്ചുവട്ടില്‍ കുടയും ചോറ്റുപാത്രവും ഒളിപ്പിച്ച്, ഞാനും ആ കൂട്ടത്തിലേക്ക് ലയിച്ചു.  സുരക്ഷാ ഉദ്യോഗസ്ഥര്‍ക്ക് ആറു മാസം കൂടുമ്പോള്‍ പണിയെടുക്കാന്‍ കിട്ടുന്ന ഏക അവസരമാണ്, അതവര്‍ നന്നായി ആഘോഷിക്കുന്നുമുണ്ട്. കമ്പനിയില്‍ പുതുതായി ചേര്‍ന്നവരെല്ലാം മുന്‍നിരയില്‍ തന്നെ നിലയുറപ്പിച്ചിട്ടുണ്ട്. മീനസൂര്യനോട് കെറുവിച്ച് മനസ്സില്ലാമനസ്സോടെ ഞങ്ങള്‍ കുറച്ച് പേര്‍ ഏറ്റവും പുറകിലും.