दिलचस्प पोस्ट
PHP में लूप प्रदर्शन के लिए ऑफसेट मान का उपयोग कर समयक्षेत्र संक्षिप्त करें प्रणाली में अंतर जावा में से बाहर निकलें (0), System.exit (-1), System.exit (1) टॉमकेट क्लासपाथ को एक निर्देशिका जोड़ना कैसे PHP पर 64 बिट पूर्णांक है? जावा: मुझे एक आदिम स्थानीय चर को प्रारंभ करने की आवश्यकता क्यों है? पासवर्ड वसूली सबसे अच्छा अभ्यास लागू करें खिड़की में window.event.keyCode का उपयोग करते हुए जावास्क्रिप्ट में F5 कुंजीप्रेस ईवेंट कैप्चर करना .अब पहले ही घटना 0 और 116 नहीं है कैसे एक डेटाफ्रेम पिवट करने के लिए सीएसएस का इस्तेमाल करते हुए एक तत्व से पहले लाइन ब्रेक कैसे सम्मिलित करें क्यों मेरे फ़ंक्शन कॉल को सेटटिमेउट द्वारा निष्पादित किया जाना चाहिए, जिसे तुरंत निष्पादित किया जाए? jQuery: बाहरी HTML () मैं iPhone पर UIViewControllers के बीच एक ऑब्जेक्ट कैसे साझा करूं? दशमलव के बजाय मुझे डबल का उपयोग कब करना चाहिए? उपयोगकर्ता के वर्तमान शहर का नाम कैसे पुनर्प्राप्त करें?

java: एक निश्चित सेकंड के बाद एक फ़ंक्शन चलाएँ

मेरे पास एक विशेष फ़ंक्शन है जिसे मैं 5 सेकंड के बाद निष्पादित करना चाहता हूं। मैं जावा में ऐसा कैसे कर सकता हूं?

मुझे javax.swing.timer मिला है, लेकिन मैं वास्तव में इसका उपयोग कैसे कर सकता हूँ यह नहीं समझता। ऐसा लगता है कि मैं किसी तरह से सरलता की तलाश कर रहा हूं, तो यह क्लास प्रदान करता है।

कृपया एक सरल उपयोग उदाहरण जोड़ें।

Solutions Collecting From Web of "java: एक निश्चित सेकंड के बाद एक फ़ंक्शन चलाएँ"

new java.util.Timer().schedule( new java.util.TimerTask() { @Override public void run() { // your code here } }, 5000 ); 

संपादित करें:

जवाडॉक कहता है:

टाइमर ऑब्जेक्ट के अंतिम लाइव संदर्भ को समाप्त होने के बाद और सभी बकाया कार्य निष्पादन पूर्ण हो गए हैं, टाइमर का कार्य निष्पादन थ्रेड बेहद समाप्त होता है (और कचरा संग्रह के अधीन होता है) हालांकि, यह मनमाने ढंग से लंबा होने के लिए ले सकता है।

कुछ इस तरह:

 // When your program starts up ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); // then, when you want to schedule a task Runnable task = .... executor.schedule(task, 5, TimeUnit.SECONDS); // and finally, when your program wants to exit executor.shutdown(); 

Executor पर कई अन्य कारखाने तरीके हैं जो आप इसके बजाय उपयोग कर सकते हैं, यदि आप पूल में अधिक धागे चाहते हैं।

और याद रखें, जब आप समाप्त कर लें तो निष्पादक को बंद करना महत्वपूर्ण है। अंतिम कार्य पूरा shutdown() विधि को थ्रेड पूल को बंद कर दिया जाएगा, और तब तक ब्लॉक होगा जब तक ऐसा नहीं होता। shutdownNow() थ्रेड पूल को तत्काल समाप्त कर देगा।

javax.swing.Timer का उपयोग करने का उदाहरण

 Timer timer = new Timer(3000, new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { // Code to be executed } }); timer.setRepeats(false); // Only execute once timer.start(); // Go go go! 

यह कोड केवल एक बार निष्पादित होगा, और निष्पादन 3000 एमएस (3 सेकंड) में होता है

जैसा कि कैमरर का उल्लेख है, आपको संक्षिप्त परिचय के लिए " स्विंग टाइमर का उपयोग कैसे करें " देखना चाहिए।

आप थ्रेड का उपयोग कर सकते हैं। sleep () फ़ंक्शन

 Thread.sleep(4000); myfunction(); 

आपका फ़ंक्शन 4 सेकंड के बाद निष्पादित होगा। हालांकि यह पूरे कार्यक्रम को रोक सकता है …

मेरा कोड निम्नानुसार है:

 new java.util.Timer().schedule( new java.util.TimerTask() { @Override public void run() { // your code here, and if you have to refresh UI put this code: runOnUiThread(new Runnable() { public void run() { //your code } }); } }, 5000 ); 

आपका मूल प्रश्न "स्विंग टाइमर" का उल्लेख करता है अगर वास्तव में आपका सवाल स्विंग से संबंधित है, तो आपको स्विंग टाइमर का इस्तेमाल करना चाहिए और उपयोग नहीं करना चाहिए। टाइमर।

अधिक जानकारी के लिए " कैसे उपयोग करें टाइमर " पर स्विंग ट्यूटोरियल से अनुभाग पढ़ें

ScheduledThreadPoolExecutor इस क्षमता है, लेकिन यह काफी भारी है

Timer भी यह क्षमता होती है, लेकिन कई धागे खोलता है, भले ही केवल एक बार उपयोग हो।

यहां एक परीक्षण के साथ एक सरल कार्यान्वयन है (एंड्रॉइड के हैंडलर.postDelayed () के करीब हस्ताक्षर):

 public class JavaUtil { public static void postDelayed(final Runnable runnable, final long delayMillis) { final long requested = System.currentTimeMillis(); new Thread(new Runnable() { @Override public void run() { while (true) { try { long leftToSleep = requested + delayMillis - System.currentTimeMillis(); if (leftToSleep > 0) { Thread.sleep(leftToSleep); } break; } catch (InterruptedException ignored) { } } runnable.run(); } }).start(); } } 

परीक्षा:

 @Test public void testRunsOnlyOnce() throws InterruptedException { long delay = 100; int num = 0; final AtomicInteger numAtomic = new AtomicInteger(num); JavaUtil.postDelayed(new Runnable() { @Override public void run() { numAtomic.incrementAndGet(); } }, delay); Assert.assertEquals(num, numAtomic.get()); Thread.sleep(delay + 10); Assert.assertEquals(num + 1, numAtomic.get()); Thread.sleep(delay * 2); Assert.assertEquals(num + 1, numAtomic.get()); } 
 Public static timer t; public synchronized void startPollingTimer() { if (t == null) { TimerTask task = new TimerTask() { @Override public void run() { //Do your work } }; t = new Timer(); t.scheduleAtFixedRate(task, 0, 1000); } }