मैं एक टेट्रिस प्रोजेक्ट पर काम कर रहा हूं और मुझे पता चल रहा है कि मुझे दोनों का उपयोग करने की आवश्यकता है javax.swing.Timer तथा java.util.Timer। लेकिन उनमें से एक भी काम नहीं कर रहा है। किसी को भी इस समस्या में कोई अंतर्दृष्टि प्रदान कर सकते हैं?
उत्तर:
उत्तर № 1 के लिए 1हां आप एक साथ 2 वर्गों का उपयोग कर सकते हैं लेकिन आपको इस तरह पूर्ण पैकेज में प्रवेश करना होगा
java.util.Timer myUtilTimer= ..
javax.swing.Timer myUtilTimer= ..
इसके अलावा आपको उस आउटपुट का ध्यान रखना होगा java.util.Timer
में लपेटा जाना चाहिए SwingUtilities.invokeLater(myRunnable);
को जोड़ने के लिए EDT अन्यथा इस बात की कोई गारंटी नहीं है कि कुछ भी कूटनीतिक रूप से बदल / बदला हुआ होना चाहिए
जवाब के लिए 2 № 2
हां, आप एक ही नाम के साथ 2 वर्गों का उपयोग कर सकते हैं, लेकिन उन्हें आयात करने के बजाय, आपको पूर्ण योग्यता का उपयोग करना चाहिए:
अर्थात:
javax.swing.Timer timer = new ...
उत्तर № 3 के लिए 1
हां, आप कर सकते हैं, लेकिन यदि आप एक ही जावा फ़ाइल में दोनों का उपयोग कर रहे हैं, तो आपको पूर्ण पैकेज नाम जैसे वर्ग में से किसी एक का उपयोग करना होगा java.util.Timer
यदि आप दोनों वर्गों को आयात करते हैं तो इसे एक संघर्ष मिलेगा।
उत्तर के लिए 1 № 4
इस कंक्रीट में उदाहरण, "ए javax.swing.Timer
वेतन वृद्धि a int
पर 100 हर्ट्ज, जबकि ए java.util.TimerTask
1 हर्ट्ज पर मूल्य के नमूने। "ए LinkedBlockingQueue<Integer>
साझा किए गए डेटा तक पहुंच को सिंक्रनाइज़ करता है और अंतिम रिकॉर्ड करता है N
नमूने हैं। उदाहरण तीनों पूर्ववर्ती उत्तरों की विशेषताओं को दर्शाता है:
पूरी तरह से योग्य नाम का उपयोग।
का उपयोग
invokeLater()
.