2012-01-06 15 views
5

मुझे नींद विधि का उपयोग करके धागे में देरी करने का पारंपरिक तरीका पता है। मेरा प्रश्न माना जाता है कि मैं निम्नलिखित है:जावा थ्रेड्स: थ्रेड के बीच एक्जिक्यूटर्स सेवा विलंब

ExecutorService threadExecutor = Executors.newFixedThreadPool(5); 

वहाँ एक रास्ता ExecutorService वर्ग का उपयोग कर नींद विधि का उपयोग कर के बिना प्रत्येक धागे के बीच एक देरी के लिए से कहना है? मेरा मतलब है कि इस उद्देश्य के लिए एक्जिक्यूटर्स सर्विस क्लास में कोई तरीका है?

+2

Whjat आप "प्रत्येक धागे के बीच की देरी" मतलब है इसका मतलब क्या है? क्या आप प्रत्येक सबमिट किए गए कार्य के निष्कर्ष के बीच देरी करते हैं? – skaffman

+0

क्या आप देरी के कारण का नाम दे सकते हैं? अधिकांश समय आपके पास Runnables/Futures के बजाय किसी प्रकार की अवरोध का उपयोग होता है। इसके अलावा, आपको किस कार्यक्षमता की आवश्यकता है जो नींद() उपयोग के लिए उपयुक्त नहीं है? –

+0

कक्षा प्रलेखन में कुछ भी सूचीबद्ध नहीं है। http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ExecutorService.html – Max

उत्तर

9

आप

ScheduledExecutorService service = Executors.newScheduledThreadPool(5); 

service.scheduleAtFixedRate(task, initialDelay, period, TimeUnit.MILLISECONDS); 

आप तीन कार्यों चाहते हैं की तरह कुछ, 10 सेकंड के अलावा आप कर सकते हैं

service.execute(task1); 
service.schedule(task2, 10, TimeUnit.SECONDS); 
service.schedule(task3, 20, TimeUnit.SECONDS); 
+0

मुझे लगता है कि उपर्युक्त किसी विशेष कार्य पर आवधिक देरी का कारण बन जाएगा - जिसका अर्थ है कि एक ही कार्य आवधिक अवधि में चलाया जाता है। मैं जो चाहता हूं वह कार्यों के बीच की देरी है उदाहरण के लिए कार्य 1 (रननेबल ओबीजे 1) पहले भाग गया और कार्य 2 (रननेबल ओबीजे 2) चलने शुरू हो जाता है 10 सेकंड रनने योग्य obj1 सबमिट किया गया है। मैं सोच रहा हूं कि यह निष्पादक सेवा या किसी प्रकार का उपयोग कर किया जा सकता है .. – yapkm01

+0

आपकी टिप्पणी के आधार पर अद्यतन किया गया है। –

संबंधित मुद्दे