CopyOnWriteArrayList
கொடுக்கப்பட்ட சேகரிப்பில் உள்ள சேர் , செட் , நீக்கல் செயல்பாடுகள் , உள் அணிவரிசையின் புதிய நகல் உருவாக்கப்படும். ConcurrentModificationException ஐப் பிடிக்கவில்லை என்பதை இது உறுதி செய்கிறது .
ஒரு அணிவரிசையை நகலெடுக்கும் போது, த்ரெட்-பாதுகாப்பான கூறுகளின் புலங்களுக்கான அணுகல் உட்பட, பொருள்களுக்கான குறிப்புகள் மட்டுமே நகலெடுக்கப்படும் என்பதை நினைவில் கொள்ளுங்கள். இத்தகைய சேகரிப்புகள் குறைந்தபட்ச எண்ணிக்கையிலான எழுதும் செயல்பாடுகளில் சிறப்பாகப் பயன்படுத்தப்படுகின்றன.
CopyOnWriteArrayList<E> என்பது ArrayList இன் நூல்-பாதுகாப்பான அனலாக் ஆகும், இது CopyOnWrite அல்காரிதம்களின் அடிப்படையில் செயல்படுத்தப்படுகிறது. கூடுதல் முறைகள் மற்றும் கட்டமைப்பாளர் கீழே விவரிக்கப்பட்டுள்ளன:
CopyOnWriteArrayList(E[] toCopyIn) | ஒரு வரிசையை உள்ளீடாக எடுக்கும் ஒரு கட்டமைப்பாளர். |
int indexOf(E e, int index) | கொடுக்கப்பட்ட குறியீட்டில் தொடங்கி, கண்டுபிடிக்கப்பட்ட முதல் தனிமத்தின் குறியீட்டை வழங்குகிறது. |
int lastIndexOf(E e, int index) | கொடுக்கப்பட்ட குறியீட்டில் தொடங்கி, தலைகீழ் தேடலில் காணப்படும் முதல் உறுப்பின் குறியீட்டை வழங்கும். |
பூலியன் addIfAbsent(E e) | ஒரு உறுப்பு சேகரிப்பில் இல்லை என்றால் அதைச் சேர்க்கவும். உறுப்புகளை ஒப்பிடுவதற்கு சமமான முறை பயன்படுத்தப்படுகிறது . |
int addAllAbsent(சேகரிப்பு<? நீட்டிக்கிறது E> c) | கூறுகள் சேகரிப்பில் இல்லை என்றால் அவற்றைச் சேர்க்கவும். சேர்க்கப்பட்ட உறுப்புகளின் எண்ணிக்கையை வழங்கும். |
ConcurrentMap இடைமுகம்
மல்டித்ரெடிங் மற்றும் அளவிடுதலுக்கான ஆதரவுடன் ஹாஷ்மேப் மற்றும் ட்ரீமேப்பின் மேம்படுத்தப்பட்ட செயலாக்கங்கள் .
ConcurrentMap<K, V> என்பது கூடுதல் அணு செயல்பாடுகளுடன் வரைபடத்தை நீட்டிக்கும் இடைமுகமாகும்
V putIfAbsent(K விசை, V மதிப்பு) | விசை சேகரிப்பில் இல்லை என்றால் மட்டுமே புதிய விசை மதிப்பு ஜோடியைச் சேர்க்கும். கொடுக்கப்பட்ட விசைக்கான முந்தைய மதிப்பை வழங்கும். |
பூலியன் நீக்கு (பொருள் விசை, பொருள் மதிப்பு) | கொடுக்கப்பட்ட விசை வரைபடத்தில் கொடுக்கப்பட்ட மதிப்புடன் பொருந்தினால் மட்டுமே விசை-மதிப்பு ஜோடியை அகற்றும். உறுப்பு வெற்றிகரமாக அகற்றப்பட்டால் சரி என்று திரும்பும். |
பூலியன் மாற்றீடு (கே விசை, வி பழைய மதிப்பு, வி புதிய மதிப்பு) | வரைபடத்தில் கொடுக்கப்பட்ட மதிப்புடன் பழைய மதிப்பு பொருந்தினால் மட்டுமே பழைய மதிப்பை புதியதாக மாற்றுகிறது. மதிப்பு புதியதாக மாற்றப்பட்டிருந்தால் சரி என்பதைத் தரும். |
V பதிலாக (K விசை, V மதிப்பு) | விசை எந்த மதிப்புடனும் தொடர்புடையதாக இருந்தால் மட்டுமே பழைய மதிப்பை புதியதாக மாற்றுகிறது. கொடுக்கப்பட்ட விசைக்கான முந்தைய மதிப்பை வழங்கும். |
ConcurrentHashMap<K, V> - இங்கே தரவு பிரிவுகளின் வடிவத்தில் வழங்கப்படுகிறது, அவை முக்கிய ஹாஷ்களாக பிரிக்கப்படுகின்றன. இதன் விளைவாக, உங்களுக்கு அணுகல் தேவைப்பட்டால், பிரிவு பூட்டப்பட்டுள்ளது, பொருள் அல்ல. இட்டேட்டர்கள் ConcurrentModificationExceptionஐ தூக்கி எறிவதில்லைமற்றும் ஒரு குறிப்பிட்ட காலத்திற்கு தரவை பிரதிநிதித்துவப்படுத்தாது.
ConcurrentHashMap இன் செயலாக்கங்கள்
ConcurrentHashMap<K, V> - இங்கே தரவு பிரிவுகளின் வடிவத்தில் வழங்கப்படுகிறது, முக்கிய ஹாஷ்களால் உடைக்கப்படுகிறது. இதன் விளைவாக, தரவு அணுகல் ஒரு பொருளால் அல்ல, பிரிவுகளால் பூட்டப்படுகிறது. கூடுதலாக, இட்டேட்டர்கள் ஒரு குறிப்பிட்ட நேரத்திற்கான தரவைக் குறிக்கின்றன, மேலும் ConcurrentModificationException ஐ வீசுவதில்லை.
ConcurrentNavigableMap<K,V> - NavigableMap இடைமுகத்தை நீட்டித்து ConcurrentNavigableMap ஐ வழங்குகிறது. அனைத்து இட்டேட்டர்களும் பயன்படுத்த பாதுகாப்பானவை மற்றும் ConcurrentModificationException ஐ வீச வேண்டாம் .
ConcurrentSkipListMap<K, V> என்பது மல்டித்ரெடிங்கிற்கான TreeMap இன் அனலாக் ஆகும்தரவு விசையால் வரிசைப்படுத்தப்படுகிறது மற்றும் சராசரியாக பதிவு(N) செயல்திறன்,containsKey,get,put,Remove, மற்றும் பிற ஒத்த செயல்பாடுகளுக்கு உத்தரவாதம் அளிக்கப்படுகிறது.
ConcurrentSkipListSet<E> என்பது ConcurrentSkipListMap ஐ அடிப்படையாகக் கொண்ட செட் இடைமுகத்தின் செயலாக்கமாகும்.
GO TO FULL VERSION