2013-05-13 9 views
5

के साथ डिफ़ॉल्ट पूल वी.एस. अक्का पूल प्रलेखन के अनुसार, एक अभिनेता के उपयोग करने के लिए आसान तरीका है:प्ले 2 धागा पूल: जावा

वादा promiseOfInt = Akka.future (नई प्रतिदेय() { सार्वजनिक इंटीजर कॉल() { वापसी ...; }});

लेकिन डॉक्टर यह भी कहता है कि जावा एपीआई के साथ यह हमेशा एक ही थ्रेड पूल (डिफ़ॉल्ट थ्रेड पूल खेलें) का उपयोग करेगा।

प्रलेखन का कहना है कि अभिनेताओं के लिए एक अक्का पूल भी है। मैं सामान्य अभिनेताओं के कार्यों को अवरुद्ध न करने के लिए, इस अभिनेता कार्यों को अक्का थ्रेड पूल में कैसे भेज सकता हूं? तो मैं अक्का पूल को ट्यून करने और डिफ़ॉल्ट पूल को छोटा रखने में सक्षम होगा।

धन्यवाद, लोइक

+0

क्या आपने [प्ले थ्रेड पूल डॉक] (http://www.playframework.com/documentation/2.1.1/TreadPools) की जांच की थी? –

+0

हां मैंने किया, यही कारण है कि मैंने इस सवाल से पूछा है। मुझे यह अस्पष्ट लगता है, अभिनेताओं के लिए एक अक्का पूल है लेकिन डॉक्टर यह भी कहता है कि जावा एपीआई के साथ यह हमेशा एक ही थ्रेड पूल (डिफ़ॉल्ट थ्रेड पूल खेलें) का उपयोग करेगा। – Loic

+1

आप एक कस्टम निष्पादन कॉन्टेक्स्ट (यानी अभिनेताओं का कस्टम पूल) बना सकते हैं, और इसका उपयोग करने के लिए सीधे अक्का एपीआई को कॉल कर सकते हैं: http://doc.akka.io/japi/akka/2.1.2/akka/dispatch/Futures.html # भविष्य (java.util.concurrent.Callable, scala.concurrent.ExecutionContext) और http://doc.akka.io/docs/akka/2.1.2/java/futures.html –

उत्तर

1

जावा अक्का प्लगइन (play.libs.Akka) आगे स्काला प्लगइन (play.api.libs.Akka), जो बारी में ऐप्लिकेशन के विन्यास के आधार पर एक नया अभिनेता प्रणाली शुरू होता है। (यह सब प्लगइन करता है।)

तो आप akka कॉन्फ़िगर कुंजी के आधार पर अपनी सामान्य application.conf फ़ाइल का उपयोग करके उस अभिनेता सिस्टम और उसके सभी प्रेषक (एक प्रेषक भी एक निष्पादन कॉन्टेक्स्ट) कॉन्फ़िगर करेंगे। ये प्रेषक थ्रेड पूल हैं जो दस्तावेज़ीकरण का जिक्र कर रहे हैं।

डिफ़ॉल्ट थ्रेड पूल का उपयोग तब किया जाता है जब आप play.api.libs.concurrent.Execution.default आयात करते हैं। यह एक स्काला-केवल एपीआई है। जावा में, जैसे ही आप वायदा और वादे को स्पर्श करते हैं, यह निष्पादन कॉन्टेक्स्ट हमेशा स्वचालित रूप से उपयोग किया जाता है। यह थ्रेड पूल वास्तव में Play की आंतरिक अभिनेता प्रणाली पर आधारित है, जो play कॉन्फ़िगर कुंजी के माध्यम से कॉन्फ़िगर किया गया है।

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

कलाकारों के बाहर, आप Play के डिफ़ॉल्ट/आंतरिक थ्रेड पूल का उपयोग करेंगे।

+0

धन्यवाद यह बहुत स्पष्ट है! – Loic

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