ஜாவாவில் மல்டித்ரெடிங்

ஜாவா மெய்நிகர் இயந்திரம் இணையான கணினியை ஆதரிக்கிறது . அனைத்து கணக்கீடுகளும் ஒன்று அல்லது அதற்கு மேற்பட்ட நூல்களின் சூழலில் செய்யப்படலாம். ஒரே ஆதாரம் அல்லது பொருளுக்கான அணுகலை பல த்ரெட்களுக்கு எளிதாக அமைக்கலாம், அதே போல் ஒரு பிளாக் குறியீட்டை இயக்க ஒரு நூலையும் அமைக்கலாம்.

எந்தவொரு டெவலப்பரும் தங்களுக்கு ஒதுக்கப்பட்ட பல நூல்களைக் கொண்ட ஆதாரங்களுக்கான வாசிப்பு மற்றும் எழுதுதல் செயல்பாடுகளின் போது த்ரெட்களுடன் வேலையை ஒத்திசைக்க வேண்டும்.

ஆதாரத்தை அணுகும் நேரத்தில், உங்களிடம் புதுப்பித்த தரவு இருப்பது முக்கியம், இதனால் மற்றொரு நூல் அதை மாற்ற முடியும் மற்றும் நீங்கள் மிகவும் புதுப்பிக்கப்பட்ட தகவலைப் பெறுவீர்கள். வங்கிக் கணக்கின் உதாரணத்தை எடுத்துக் கொண்டாலும், பணம் வரும் வரை, அதைப் பயன்படுத்த முடியாது, எனவே எப்போதும் புதுப்பித்த தரவு வைத்திருப்பது முக்கியம். நூல்களை ஒத்திசைப்பதற்கும் நிர்வகிப்பதற்கும் ஜாவா சிறப்பு வகுப்புகளைக் கொண்டுள்ளது.

நூல் பொருள்கள்

இது அனைத்தும் முக்கிய (முக்கிய) நூலில் தொடங்குகிறது, அதாவது, குறைந்தபட்சம் உங்கள் நிரலில் ஏற்கனவே ஒரு இயங்கும் நூல் உள்ளது. மெயின் த்ரெட், Callable அல்லது Runnable ஐப் பயன்படுத்தி மற்ற இழைகளை உருவாக்க முடியும் . உருவாக்கம் திரும்பும் முடிவில் மட்டுமே வேறுபடுகிறது, இயக்கக்கூடியது ஒரு முடிவை வழங்காது மற்றும் சரிபார்க்கப்பட்ட விதிவிலக்கை எறிய முடியாது. எனவே, கோப்புகளுடன் திறமையான வேலையை உருவாக்க உங்களுக்கு ஒரு நல்ல வாய்ப்பு கிடைக்கும், ஆனால் இது மிகவும் ஆபத்தானது மற்றும் நீங்கள் கவனமாக இருக்க வேண்டும்.

ஒரு தனி CPU மையத்தில் நூல் செயல்படுத்தலை திட்டமிடுவதும் சாத்தியமாகும். கணினி த்ரெட்களுக்கு இடையில் எளிதாக நகர்த்தலாம் மற்றும் சரியான அமைப்புகளுடன் ஒரு குறிப்பிட்ட நூலை இயக்கலாம்: அதாவது, தரவைப் படிக்கும் நூல் முதலில் செயல்படுத்தப்படும், எங்களிடம் தரவு கிடைத்தவுடன், சரிபார்ப்புக்கு பொறுப்பான நூலுக்கு அதை அனுப்புவோம், அதன்பிறகு, சில வணிக தர்க்கங்களைச் செயல்படுத்துவதற்கு அதைத் தொடருக்கு அனுப்புவோம், மேலும் ஒரு புதிய நூலை மீண்டும் எழுதுவோம். அத்தகைய சூழ்நிலையில், 4 இழைகள் தரவை செயலாக்குகின்றன, மேலும் அனைத்தும் ஒரு நூலை விட வேகமாக செயல்படும். அத்தகைய ஒவ்வொரு ஸ்ட்ரீமும் சொந்த OS ஸ்ட்ரீமாக மாற்றப்படுகிறது, ஆனால் அது எவ்வாறு மாற்றப்படும் என்பது JVM செயல்படுத்தலைப் பொறுத்தது.

இழைகளை உருவாக்க மற்றும் வேலை செய்ய த்ரெட் வகுப்பு பயன்படுத்தப்படுகிறது. இது நிலையான கட்டுப்பாட்டு பொறிமுறைகளையும், java.util.concurrent இலிருந்து வகுப்புகள் மற்றும் சேகரிப்புகள் போன்ற சுருக்கமானவற்றையும் கொண்டுள்ளது .

ஜாவாவில் நூல் ஒத்திசைவு

பொருள்களுக்கான அணுகலைப் பகிர்வதன் மூலம் தொடர்பு வழங்கப்படுகிறது. இது மிகவும் பயனுள்ளதாக இருக்கும், ஆனால் அதே நேரத்தில் வேலை செய்யும் போது தவறு செய்வது மிகவும் எளிதானது. பிழைகள் இரண்டு நிகழ்வுகளில் வருகின்றன: நூல் குறுக்கீடு - மற்றொரு நூல் உங்கள் நூலில் குறுக்கிடும்போது, ​​மற்றும் நினைவக நிலைத்தன்மை பிழைகள் - நினைவக நிலைத்தன்மை. இந்தப் பிழைகளைத் தீர்க்கவும் தடுக்கவும், எங்களிடம் வெவ்வேறு ஒத்திசைவு முறைகள் உள்ளன.

ஜாவாவில் த்ரெட் ஒத்திசைவு மானிட்டர்களால் கையாளப்படுகிறது, இது ஒரு உயர்-நிலை பொறிமுறையாகும், இது ஒரு நேரத்தில் ஒரே மானிட்டரால் பாதுகாக்கப்பட்ட குறியீட்டின் தொகுதியை இயக்க ஒரே ஒரு நூலை அனுமதிக்கிறது. மானிட்டர்களின் நடத்தை பூட்டுகளின் அடிப்படையில் கருதப்படுகிறது; ஒரு மானிட்டர் - ஒரு பூட்டு.

ஒத்திசைவு நீங்கள் கவனம் செலுத்த வேண்டிய பல முக்கியமான புள்ளிகளைக் கொண்டுள்ளது. முதல் புள்ளி பரஸ்பர விலக்கு - ஒரு நூல் மட்டுமே மானிட்டரைச் சொந்தமாக வைத்திருக்க முடியும், இதனால் மானிட்டரில் ஒத்திசைவு என்பது மானிட்டரால் பாதுகாக்கப்பட்ட ஒத்திசைக்கப்பட்ட தொகுதிக்குள் ஒரு நூல் நுழைந்தவுடன், மானிட்டரால் பாதுகாக்கப்பட்ட தொகுதிக்குள் வேறு எந்த நூலும் நுழைய முடியாது. முதல் நூல் ஒத்திசைக்கப்பட்ட தொகுதியிலிருந்து வெளியேறுகிறது. அதாவது, பல நூல்கள் ஒரே நேரத்தில் ஒரே ஒத்திசைக்கப்பட்ட தொகுதியை அணுக முடியாது.

ஆனால் ஒத்திசைவு என்பது பரஸ்பர விலக்கல் மட்டுமல்ல. ஒத்திசைக்கப்பட்ட தொகுதிக்கு முன் அல்லது அதற்குள் நினைவகத்தில் எழுதப்பட்ட தரவு அதே மானிட்டரில் ஒத்திசைக்கப்பட்ட மற்ற த்ரெட்களுக்குத் தெரியும் என்பதை ஒத்திசைவு உறுதி செய்கிறது. பிளாக்கிலிருந்து வெளியேறிய பிறகு, மானிட்டரை விடுவிப்போம், மற்றொரு நூல் அதைப் பிடித்து, இந்தக் குறியீட்டின் தொகுதியை இயக்கத் தொடங்கும்.

ஒரு புதிய நூல் மானிட்டரைப் பிடிக்கும் போது, ​​அந்த குறியீட்டின் தொகுதிக்கான அணுகலையும் செயல்படுத்தும் திறனையும் பெறுவோம், அந்த நேரத்தில் மாறிகள் பிரதான நினைவகத்திலிருந்து ஏற்றப்படும். மானிட்டரின் முந்தைய வெளியீட்டில் காணக்கூடிய அனைத்து உள்ளீடுகளையும் நாம் பார்க்கலாம்.

புலத்தில் படிக்க-எழுதுதல் என்பது ஒரு அணுச் செயல்பாடாகும் . ஆனால் நீங்கள் இன்னும் பிழையை எதிர்கொண்டால், மறுவரிசைப்படுத்துதல் (வரிசையை மாற்றுதல், மறுவரிசைப்படுத்துதல்) பற்றிய பிழையைப் பெறுவீர்கள். இது தவறாக ஒத்திசைக்கப்பட்ட பல-திரிக்கப்பட்ட நிரல்களில் தன்னை வெளிப்படுத்துகிறது, அங்கு ஒரு நூல் மற்ற நூல்களால் உருவாக்கப்படும் விளைவுகளை கவனிக்க முடியும்.

பரஸ்பர விலக்கு மற்றும் நூல்களின் ஒத்திசைவின் விளைவு, அதாவது, ஒத்திசைக்கப்பட்ட தொகுதி அல்லது பூட்டை மறைமுகமாகப் பெறும் முறையை உள்ளிடுவதன் மூலம் அல்லது வெளிப்படையாக பூட்டைப் பெறுவதன் மூலம் மட்டுமே அவற்றின் சரியான செயல்பாடு அடையப்படுகிறது. அதைப் பற்றி கீழே பேசுவோம். வேலை செய்யும் இரண்டு வழிகளும் உங்கள் நினைவகத்தைப் பாதிக்கின்றன, மேலும் ஆவியாகும் மாறிகளுடன் பணிபுரிவதை மறந்துவிடக் கூடாது .

ஜாவாவில் ஆவியாகும் புலங்கள்

ஒரு மாறியானது ஆவியாகும் எனக் குறிக்கப்பட்டால் , அது உலகளவில் கிடைக்கும். இதன் பொருள் ஒரு நூல் ஒரு ஆவியாகும் மாறியை அணுகினால் , தற்காலிக சேமிப்பிலிருந்து மதிப்பைப் பயன்படுத்துவதற்கு முன்பு அதன் மதிப்பைப் பெறும்.

ஒரு எழுத்து மானிட்டர் வெளியீடு போலவும், வாசிப்பு ஒரு மானிட்டர் பிடிப்பு போலவும் செயல்படுகிறது. அணுகல் "முன்னர் நிகழ்த்தப்பட்ட" வகையின் தொடர்பில் மேற்கொள்ளப்படுகிறது. நீங்கள் அதைக் கண்டுபிடித்தால், ஒரு ஆவியாகும் மாறியை அணுகும் போது, ​​திரி A க்கு தெரியும், இது திரி B இன் மாறியாகும். அதாவது, மற்ற த்ரெட்களில் இருந்து உங்கள் மாற்றங்களை இழக்க மாட்டீர்கள் என்று உங்களுக்கு உத்தரவாதம் உள்ளது.

ஆவியாகும் மாறிகள் அணு, அதாவது, அத்தகைய மாறியைப் படிக்கும்போது, ​​​​பூட்டைப் பெறும்போது அதே விளைவு பயன்படுத்தப்படுகிறது - நினைவகத்தில் உள்ள தரவு தவறானது அல்லது தவறானது என அறிவிக்கப்படுகிறது, மேலும் ஆவியாகும் மாறியின் மதிப்பு மீண்டும் நினைவகத்திலிருந்து படிக்கப்படுகிறது . எழுதும் போது, ​​நினைவகத்தில் விளைவு பயன்படுத்தப்படுகிறது, அதே போல் ஒரு பூட்டை வெளியிடும் போது - ஒரு ஆவியாகும் புலம் நினைவகத்தில் எழுதப்படுகிறது.

ஜாவா ஒரே நேரத்தில்

நீங்கள் ஒரு சூப்பர்-திறனுள்ள மற்றும் பல-திரிக்கப்பட்ட பயன்பாட்டை உருவாக்க விரும்பினால், java.util.concurrent தொகுப்பில் உள்ள JavaConcurrent நூலகத்திலிருந்து வகுப்புகளைப் பயன்படுத்த வேண்டும் .

நூலகம் மிகவும் பெரியது மற்றும் வெவ்வேறு செயல்பாடுகளைக் கொண்டுள்ளது, எனவே உள்ளே இருப்பதைப் பார்த்து, அதை சில தொகுதிகளாகப் பிரிப்போம்:

ஜாவா ஒரே நேரத்தில்

கன்கரண்ட் கலெக்ஷன்ஸ் என்பது பல திரிக்கப்பட்ட சூழலில் வேலை செய்வதற்கான தொகுப்புகளின் தொகுப்பாகும். மொத்த சேகரிப்புக்கான அணுகலைத் தடுக்கும் அடிப்படை ரேப்பர் Collections.synchronizedList க்குப் பதிலாக, தரவுப் பிரிவுகளில் பூட்டுகள் பயன்படுத்தப்படுகின்றன அல்லது தரவை இணையாகப் படிக்க காத்திருப்பு-இலவச அல்காரிதம்கள் பயன்படுத்தப்படுகின்றன.

வரிசைகள் - பல திரிக்கப்பட்ட சூழலில் பணிபுரியும் வரிசைகளைத் தடுக்காத மற்றும் தடுக்கும் வரிசைகள். தடுக்காத வரிசைகள் த்ரெட்களைத் தடுக்காமல் வேகம் மற்றும் செயல்பாட்டில் கவனம் செலுத்துகின்றன. நீங்கள் தயாரிப்பாளர் அல்லது நுகர்வோர் நூல்களை "மெதுவாக" செய்ய வேண்டியிருக்கும் போது, ​​வரிசைகளைத் தடுப்பது வேலைக்கு ஏற்றது. எடுத்துக்காட்டாக, சில நிபந்தனைகள் பூர்த்தி செய்யப்படாத சூழ்நிலையில், வரிசை காலியாகவோ அல்லது நிரம்பியதாகவோ அல்லது இலவச நுகர்வோர் 'a இல்லை.

சின்க்ரோனைசர்கள் என்பது நூல்களை ஒத்திசைப்பதற்கான பயன்பாட்டுப் பயன்பாடுகள். அவை "இணை" கணினியில் ஒரு சக்திவாய்ந்த ஆயுதம்.

எக்ஸிகியூட்டர்கள் என்பது நூல் குளங்களை மிகவும் வசதியான மற்றும் எளிதாக உருவாக்குவதற்கான ஒரு கட்டமைப்பாகும், முடிவுகளைப் பெறுவதன் மூலம் ஒத்திசைவற்ற பணிகளின் திட்டமிடலை அமைப்பது எளிது.

பூட்டுகள் என்பது அடிப்படை ஒத்திசைவு , காத்திரு , அறிவித்தல் , அனைத்திற்கும் அறிவிப்போடு ஒப்பிடும்போது பல நெகிழ்வான நூல் ஒத்திசைவு வழிமுறைகள் ஆகும்.

அணுக்கள் என்பது பழமையான மற்றும் குறிப்புகள் மீதான அணு செயல்பாடுகளை ஆதரிக்கும் வகுப்புகள்.