कुछ टेस्ट कोड लिखने में मैंने पाया है कि Selector.select() चयनकर्ता के बिना वापस आ सकता है। चयन किए गए कीज़() जिसमें प्रक्रिया के लिए कोई भी कुंजी है। यह एक तंग पाश में हो रहा है जब मैंजावा एनआईओ चयनित() चयनित कुंजी के बिना रिटर्न - क्यों?
SelectionKey.OP_READ | SelectionKey.OP_CONNECTहित के संचालन के रूप में
के साथ एक को स्वीकार() एड चैनल रजिस्टर।)
1 चैनलों कि अपना काम कर सकती हैं:
डॉक्स के अनुसार, का चयन करें() जब वापस आ जाएगी।
2) आप स्पष्ट रूप से Selector.wakeup() को कॉल करते हैं - कोई कुंजी चयनित नहीं है।
3) आप स्पष्ट रूप से Thread.interrupt() थ्रेड चुनने वाले थ्रेड() - कोई कुंजी चयनित नहीं हैं।
यदि मुझे चयन के बाद कोई चाबियाँ नहीं मिलती हैं() मुझे मामलों (2) और (3) में होना चाहिए। हालांकि, मेरा कोड इन रिटर्न को शुरू करने के लिए wakeup() या इंटरप्ट() को कॉल नहीं कर रहा है।
इस व्यवहार के कारण क्या कोई विचार है?
उत्तर के लिए धन्यवाद। यह स्पष्ट रूप से चयन के व्यवहार में एक विसंगति है, लेकिन यह आसानी से सुलभ है। –
@ फ्रैंकटाइलर मुझे नहीं पता कि प्रोग्रामिंग त्रुटि को 'चयन के व्यवहार में एक विसंगति' क्यों माना जाना चाहिए। – EJP