Event dispatching thread
நிகழ்வு அனுப்பும் நூல் (EDT) என்பது ஜாவாவில் சுருக்க சாளர கருவித்தொகுப்பு (AWT) வரைகலை பயனர் இடைமுக நிகழ்வு வரிசையில் இருந்து நிகழ்வுகளை செயலாக்க பயன்படுத்தப்படும் ஒரு பின்னணி நூல் ஆகும். இது நிகழ்வு-உந்துதல் நிரலாக்கத்தின் பொதுவான கருத்துக்கு ஒரு எடுத்துக்காட்டு, இது ஜாவாவைத் தவிர பல சூழல்களில் பிரபலமாக உள்ளது, எடுத்துக்காட்டாக, வலை உலாவிகள் அல்லது வலை சேவையகங்கள். நிகழ்வுகள் முதன்மையாக பயனர் இடைமுக கூறுகள் தங்களை மீண்டும் வரைய வைக்கும் நிகழ்வுகளை புதுப்பிக்கின்றன, அல்லது சுட்டி அல்லது விசைப்பலகை போன்ற உள்ளீட்டு சாதனங்களிலிருந்து உள்ளீட்டு நிகழ்வுகள். AWT ஒரு ஒற்றை-நூல் ஓவிய மாதிரியைப் பயன்படுத்துகிறது, இதில் அனைத்து திரை புதுப்பிப்புகளும் ஒரே நூலில் இருந்து செய்யப்பட வேண்டும். காணக்கூடிய பயனர் இடைமுக கூறுகளின் காட்சி நிலையை புதுப்பிக்க நிகழ்வு அனுப்பும் நூல் மட்டுமே செல்லுபடியாகும் நூல் ஆகும். பிற நூல்களிலிருந்து புலப்படும் கூறுகளைப் புதுப்பிப்பது ஸ்விங்கைப் பயன்படுத்தும் ஜாவா நிரல்களில் உள்ள பல பொதுவான பிழைகளின் ஆதாரமாகும். நிகழ்வு அனுப்பும் நூல் அடோப் ஃப்ளாஷில் முதன்மையான தொழிலாளி என்றும், எஸ். டபிள்யூ. டி,. நெட் ஃபிரேம்வொர்க் மற்றும் ஆண்ட்ராய்டு ஆகியவற்றில் யுஐ நூல் என்றும் அழைக்கப்படுகிறது. GUI அணுகல்களை வரிசைப்படுத்துவதற்கான செய்தி வளையம் ஒரு மென்பொருள் பயன்பாடு பொதுவாக பல இழைகள் மற்றும் ஒற்றை GIT தரவு கட்டமைப்பைக் கொண்டுள்ளது. இதன் பொருள் ஜிஐடி என்பது ஒரு பகிரப்பட்ட தரவு அமைப்பு மற்றும் ஒரு நேரத்தில் ஒரு நூல் மட்டுமே அதை அணுகுவதை உறுதிப்படுத்த சில ஒத்திசைவு தேவைப்படுகிறது. AWT மற்றும் ஸ்விங் GUI கூறுகளை உருவாக்குவதற்கும் அணுகுவதற்கும் (நூல் பாதுகாப்பற்ற) முறைகளை அம்பலப்படுத்தினாலும், இந்த முறைகள் அனைத்து பயன்பாட்டு நூல்களுக்கும் தெரியும், இதேபோல் மற்ற GUI கட்டமைப்புகளிலும், ஒரு ஒற்றை, நிகழ்வு அனுப்பும் நூலுக்கு மட்டுமே இந்த முறைகளை செயல்படுத்த உரிமை உண்டு. புரோகிராமர்கள் பெரும்பாலும் இந்த தேவையை தவறவிடுவதால், மூன்றாம் தரப்பு லுக் அண்ட் ஃபீல்ஸ், பொருள் போன்றது, அத்தகைய குறியீட்டு தவறைத் தடுக்க, நிகழ்வு அனுப்புதல் நூலுக்குள் இயங்காதபோது எந்த ஸ்விங் கூறுகளையும் உடனடியாக மறுக்கிறது. GUI க்கான அணுகல் வரிசைப்படுத்தப்பட்டுள்ளது மற்றும் பிற நூல்கள் EDT செய்தி வரிசை மூலம் EDT இல் செயல்படுத்த சில குறியீட்டை சமர்ப்பிக்கலாம். அதாவது, இதேபோல் மற்ற GUI கட்டமைப்புகளில், நிகழ்வு அனுப்பும் நூல் அதன் வாழ்நாள் பம்பிங் செய்திகளை செலவிடுகிறதுஃ இது GUI மூலம் செய்யப்பட வேண்டிய செயல்களின் செய்தி வரிசையை பராமரிக்கிறது. இந்த கோரிக்கைகள் கணினி மற்றும் எந்தவொரு விண்ணப்ப நூலுக்கும் வரிசையில் சமர்ப்பிக்கப்படுகின்றன. EDT அவற்றை ஒன்றன் பின் ஒன்றாக பயன்படுத்துகிறது மற்றும் GUI கூறுகளை புதுப்பிப்பதன் மூலம் பதிலளிக்கிறது. செய்திகள் நன்கு அறியப்பட்ட செயல்களாக இருக்கலாம் அல்லது அழைப்புகளை உள்ளடக்கியிருக்கலாம், பயனர்-முறைகள் பற்றிய குறிப்புகள் EDT மூலம் செயல்படுத்தப்பட வேண்டும். அனைத்து செய்திகளுக்கும் விதிக்கப்பட்டுள்ள முக்கியமான தேவை என்னவென்றால், GUI பதிலளிக்கப்படுவதற்கு அவை விரைவாக செயல்படுத்தப்பட வேண்டும். இல்லையெனில், செய்தி வளையம் தடுக்கப்பட்டு GUI உறைபனி அனுபவிக்கப்படுகிறது. பயனர் குறியீட்டை EDT க்கு சமர்ப்பிப்பது EDT க்கு குறியீட்டை சமர்ப்பிப்பதற்கும், வளையத்தைத் தடுக்காமல் நீண்ட பணிகளைச் செய்வதற்கும் பல்வேறு தீர்வுகள் உள்ளன. கூறு நிகழ்வு கையாளுபவர்கள் (கேட்போர்) GUI கூறுகள் கேட்போர் என்று அழைக்கப்படும் அழைப்புகளின் பட்டியல்களை ஆதரிக்கின்றன, அவை பொதுவாக கூறுகள் உருவாக்கப்படும்போது மக்கள்தொகை கொண்டவை. பயனர் எப்படியாவது கூறுகளை உற்சாகப்படுத்தும் போது கேட்பவர்களை EDT செயல்படுத்துகிறது (பொத்தானைக் கிளிக் செய்தால், சுட்டி நகர்த்தப்படும், உருப்படி தேர்ந்தெடுக்கப்படும், கவனம் இழக்கப்படும், கூறு அளவு மாற்றப்படும் மற்றும் பல). அவ்வப்போது அல்லது குறிப்பிட்ட நேரத்தில் GUI ஐ அணுக/மாற்ற வேண்டிய குறுகிய பணிகளுக்கு, javax.swing.Timer பயன்படுத்தப்படுகிறது. இது ஒரு கண்ணுக்குத் தெரியாத GUI கூறாகக் கருதப்படலாம், அதன் கேட்போர் குறிப்பிட்ட நேரத்தில் (களில்) துப்பாக்கிச் சூடு நடத்த பதிவு செய்யப்படுகிறார்கள். சமமானவை System.Windows.Forms.Timer-. NET கட்டமைப்பு flash.utils.Timer-பிற நூல்களிலிருந்து அடோப் ஃப்ளாஷ் கோரிக்கைகள் பிற பயன்பாட்டு நூல்கள் உதவி வகுப்புகள் மூலம் (அல்லது நீங்கள் AWT செய்கிறீர்கள் என்றால்) நூலை அனுப்பும் நிகழ்வில் செயல்படுத்த சில குறியீடுகளை அனுப்பலாம். சமர்ப்பிக்கப்பட்ட குறியீடு ஒரு பொருளுடன் மூடப்பட்டிருக்க வேண்டும். இந்த வகுப்புகளின் இரண்டு முறைகள் அனுமதிக்கின்றனஃ ஒத்திசைவு குறியீடு செயல்படுத்தல் (அல்லது) மற்றும் ஒத்திசைவற்ற குறியீடு செயல்படுத்தல் (அல்லது) நிகழ்வு அனுப்பும் நூலில் இருந்து. நிகழ்வை அனுப்பும் நூலில் இருந்து இன்வோக் அண்ட் வெயிட் () முறையை ஒருபோதும் அழைக்கக்கூடாது-இது ஒரு விதிவிலக்காக இருக்கும். முறை அல்லது தற்போதைய நூல் நிகழ்வு அனுப்பும் நூல் என்பதை தீர்மானிக்க அழைக்கப்படலாம். இன்வோக் லேட்டர் மற்றும் இன்வோக் அண்ட் வெயிட் மூலம் EDT க்கு வழங்கப்பட்ட குறியீடு உறைபனியைத் தடுக்க முடிந்தவரை விரைவாக இருக்க வேண்டும். அவை பொதுவாக ஒரு நீண்ட கணக்கீட்டின் முடிவை GUI (பயனர்) க்கு வழங்குவதை நோக்கமாகக் கொண்டுள்ளன. பணியாளர் வடிவமைப்பு முறை மற்றொரு நூலில் ஒரு பணியை நிறைவேற்றுவது மற்றும் ஈ. டி. டி. யில் முடிவுகளை வழங்குவது ஆகிய இரண்டையும் பணியாளர் வடிவமைப்பு முறை மூலம் இணைக்கலாம். சன் மைக்ரோசிஸ்டம்ஸ் உருவாக்கிய javax.swing.SwingWorker வகுப்பு, பணியாளர் வடிவமைப்பு முறையை செயல்படுத்துவதாகும், மேலும் ஜாவா 6 நிலையான ஸ்விங் விநியோகத்தின் ஒரு பகுதியாகும். ஸ்விங்வொர்க்கர் பொதுவாக EDT-செயல்படுத்தப்பட்ட நிகழ்வு கேட்பவரிடமிருந்து EDT ஐத் தடுக்காமல் இருக்க ஒரு நீண்ட பணியைச் செய்ய அழைக்கப்படுகிறது. மாதிரிகள் ஸ்விங்வொர்க்கர் <ஆவண, வாய்டு> தொழிலாளி = புதிய ஸ்விங்வொர்க்கர் <ஆவணம், வாய்டு> () {பொது ஆவணம் டோஇன்பேக் கிரவுண்ட் () ஐஓஎக்ஸெப்ஷன் {ரிட்டர்ன் லோடுஎக்ஸ்எம்எல் ();// ஹெவி டாஸ்க்} பொது வெற்றிடத்தை () வீசுகிறது {முயற்சிக்கவும் {ஆவண டாக் = பெற (); காட்சி (டாக்);} பிடி (விதிவிலக்கு எக்ஸ்) {ex.printStackTrace ();}}; worker.execute (); நீங்கள் க்ரூவி மற்றும் groovy.swing.SwingBuilder ஐப் பயன்படுத்தினால், நீங்கள் டோலேட்டர் (), டூ அவுட்சைட் (), மற்றும் எட் () ஐப் பயன்படுத்தலாம். பின்னர் நீங்கள் இதைப் போல இன்னும் எளிமையாக எழுதலாம்ஃ டூ அவுட்சைட் {டெஃப் டாக் = லோடு எக்ஸ்எம்எல் ()// ஹெவி டாஸ்க் எட்ட் {டிஸ்ப்ளே (டாக்)}} சமமானவை System.ComponentModel.BackgroundWorker-. நெட் ஃபிரேம்வொர்க் flash.system.Worker-அடோப் ஃப்ளாஷ் android.os.AsyncTask-ஆண்ட்ராய்டு மாடல் எக்ஸிகியூஷன் ஸ்விங்வொர்க்கர் பொதுவாக கால் பேக் (கேட்பவர்) நிகழ்வுகளைக் கையாளும் போது ஈடிடியால் நீண்ட பணிகளுக்காக உருவாக்கப்படுகிறது. ஒரு பணியாளர் நூலை விரித்து, ஈ. டி. டி தற்போதைய செய்தியை தொழிலாளி முடிக்க காத்திருக்காமல் கையாளத் தொடங்குகிறது. பெரும்பாலும், இது விரும்பத்தக்கது அல்ல. பெரும்பாலும், உங்கள் EDT ஒரு GUI கூறு செயலைக் கையாளுகிறது, இது JFyleChooser போன்ற மற்றொரு உரையாடல் மூலம் ஒரு தேர்வைச் செய்ய பயனரைக் கோருகிறது, இது பாப் அப் ஆகி, பயனர் அதன் விருப்பத்தைத் தேர்ந்தெடுக்கும்போது பதிலளிக்கிறது மற்றும் "சரி" பொத்தானை அழுத்தினால் மட்டுமே தேர்ந்தெடுக்கப்பட்ட கோப்புடன் நடவடிக்கை தொடர்கிறது. நீங்கள் பார்க்கிறீர்கள், இது நேரம் எடுக்கும் (பயனர் சில நொடிகளில் பதிலளிக்கிறார்) மற்றும் EDT தடுக்கும் போது இந்த நேரத்தில் உங்களுக்கு ஒரு பதிலளிக்கக்கூடிய GUI (செய்திகள் இன்னும் EDT இல் செலுத்தப்படுகின்றன) தேவை (இது புதியதைக் கையாளவில்லை, எ. கா. JFyleChooser, உரையாடல் மூடப்பட்டு தற்போதைய கூறு நடவடிக்கை முடிவடைவதற்கு முன்பு வரிசையில் உள்ள செய்திகள்). ஒரு புதிய செய்தி வளையத்திற்குள் நுழையும் EDT மூலம் தீய சுழற்சி உடைக்கப்படுகிறது, இது "மாதிரி உரையாடல் முடியும் வரை" இயல்பான செய்திகளை அனுப்புகிறது மற்றும் கூறு நடவடிக்கையில் தடுக்கப்பட்ட நிலையில் இருந்து சாதாரண செய்தி செயலாக்கம் மீண்டும் தொடங்குகிறது. திறந்த மூல ஃபாக்ஸ்ட்ராட் திட்டம் தன்னிச்சையான பயனர் பணிகளுக்கு "ஒத்திசைவான" செயல்படுத்தும் பொறிமுறையை வழங்க ஸ்விங் செய்தி வளையத்தை உந்துகிறது, இது தொழிலாளி பணியை முடித்த பின்னரே தொடர்கிறது. button.addActionListener (புதிய ஆக்ஷன்லிஸ்டனர் () {பொது வெற்றிட நடவடிக்கை செயலற்றது (ஆக்ஷன்இவென்ட் இ) {button.setText ("ஸ்லீப்பிங்".); சரம் உரை = பூஜ்யம்; முயற்சி {உரை = (சரம்) Worker.post (புதிய பணி () {பொது பொருள் ஓட்டம் () விதிவிலக்கு {Thread.sleep (10000) ஐ வீசுகிறது; "ஸ்லீப்ட்! ";}});} கேட்ச் (எக்ஸெப்ஷன் x). button.setText (டெக்ஸ்ட்); எதையாவதுஇல்ஸ் ();}); ஜாவா 1.7 என்பதால், ஜாவா, EventQueue () சிஸ்டத்தில் உள்ள க்ரீட் செகண்டரி லூப் () ஐ வெளிப்படுத்துவதன் மூலம் தனிப்பயன் இரண்டாம் நிலை செய்தி சுழல்களுக்கு நிலையான தீர்வை வழங்குகிறது. சுருக்க சாளர கருவித்தொகுப்பு (AWT) ஸ்விங் (ஜாவா) ஸ்விங்வொர்க்கர் கூறுஅப்டேட் த்ரெட் குறிப்புகள் வெளிப்புற இணைப்புகள் (ஸ்விங் API ஜாவடோக் ஆவணப்படுத்தல்) (AWT API ஜாவடோக் ஆவணப்படுத்தல்) ஸ்விங் டுடோரியல் AWT/ஸ்விங் நிகழ்வு கையாளுதல் நிகழ்வு பம்பிங், அனுப்புதல் மற்றும் செயலாக்கம் பற்றிய கட்டுரை மற்றும் EDT ஃபாக்ஸ்ட்ராட் திட்டத்தின் முகப்பு பக்கம் ஜாவா (நிரலாக்க மொழி) ஆகியவற்றிலிருந்து நிகழ்வு-அனுப்பும் நூல் ஸ்விங்வொர்க்கர் விளக்கத்தையும் பார்க்கவும்.