CodeGym/Java Course/தொகுதி 3/பல திரிக்கப்பட்ட வடிவங்கள்

பல திரிக்கப்பட்ட வடிவங்கள்

கிடைக்கப்பெறுகிறது

3.1 செயலில் உள்ள பொருள்

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

எளிமைப்படுத்தப்பட்ட பதிப்பு:

செயலில் உள்ள பொருள்

கிளாசிக் மாறுபாடு:

செயலில் உள்ள பொருள் 2

இந்த டெம்ப்ளேட்டில் ஆறு கூறுகள் உள்ளன:

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

3.2 பூட்டு

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

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

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

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

பூட்டு முறை

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

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

பூட்டு முறை 2

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

3.3 கண்காணிப்பு

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

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

மானிட்டர் பின்வருவனவற்றைக் கொண்டுள்ளது:

  • பகிரப்பட்ட வளத்துடன் தொடர்பு கொள்ளும் நடைமுறைகளின் தொகுப்பு
  • மியூடெக்ஸ்
  • இந்த வளத்துடன் தொடர்புடைய மாறிகள்
  • பந்தய நிலையைத் தவிர்ப்பதற்கான நிபந்தனைகளை வரையறுக்கும் ஒரு மாறாநிலை

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

ஒத்திசைக்கப்பட்டwait() ஆபரேட்டர் ஜாவாவில் மற்றும் முறைகளுடன் இப்படித்தான் செயல்படுகிறது notify().

3.4 பூட்டுதலை இருமுறை சரிபார்க்கவும்

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

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

//Double-Checked Locking
public final class Singleton {
private static Singleton instance; //Don't forget volatile modifier

public static Singleton getInstance() {
     if (instance == null) {                //Read

         synchronized (Singleton.class) {    //
             if (instance == null) {         //Read Write
                 instance = new Singleton(); //
             }
         }
     }
 }

நூல்-பாதுகாப்பான சூழலில் சிங்கிள்டன் பொருளை எவ்வாறு உருவாக்குவது?

public static Singleton getInstance() {
   if (instance == null)
    instance = new Singleton();
}

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

public static Singleton getInstance() {
    synchronized (Singleton.class) {
        if (instance == null)
        instance = new Singleton();
    }
}

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

public static Singleton getInstance() {
     if (instance != null)
        return instance;

    synchronized (Singleton.class) {
        if (instance == null)
        instance = new Singleton();
    }
}

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

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

3.5 திட்டமிடுபவர்

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

1
பணி
தொகுதி 3,  நிலை 17பாடம் 2
பூட்டப்பட்டது
Trust, but Verify
task4123
கருத்துக்கள்
  • பிரபலமானவை
  • புதியவை
  • பழையவை
ஒரு கருத்தைத் தெரிவிக்க நீங்கள் உள்நுழைந்திருக்க வேண்டும்
இந்தப் பக்கத்தில் இதுவரை எந்தக் கருத்தும் வழங்கப்படவில்லை