2011-06-30 8 views
6

के लिए टीपीएल समतुल्य मुझे जावा और/या एंड्रॉइड एसडीके में सी # से टास्क समांतर लाइब्रेरी के समान कुछ पता है या नहीं। सी # पृष्ठभूमि से आ रहा है, हमें सिखाया जाता है कि एक नया धागा बनाना अपेक्षाकृत हेवीवेट ऑपरेशन है, और इसे थ्रेडपूल, या हाल ही में, कार्य का उपयोग करने का निर्देश दिया जाता है।जावा/एंड्रॉइड

तो मेरे दिमाग में, कार्य करने वाले अमूर्त स्तर का आदर्श आदर्श होगा ... क्या ऐसा कुछ भी है, या यहां तक ​​कि थ्रेडपूल भी है? या क्या इसमें बस एक नया Thread बनाने या my own threadpool

+0

"हेवीवेट ऑपरेशन" कथन के बारे में, http://stackoverflow.com/questions/2117072/java-thread-creation-overhead – skaffman

+0

देखें कि यह प्रश्न 3 साल पुराना है - किसी के पास राज्य की स्थिति पर अपडेट है आज कला? क्या हम अभी भी एक्जिक्यूटर्स और जावा 5 कंसुरेंसी सामान का उपयोग कर रहे हैं? या जावा 8 या आरएक्सजेवा में सामान जैसे नए कार्यान्वयन आए हैं जो इसे बेहतर हल करते हैं? – Nilzor

उत्तर

3

ज़रूर होता है। आप यहाँ इसके बारे में अधिक पढ़ सकते हैं: Executors

इसके अलावा, आप एक ही पृष्ठ पर पूरे संगामिति विषय अवलोकन कर सकते हैं: Concurrency

+0

जब तक मुझे कुछ याद नहीं आ रहा है, यह निरंतर समर्थन प्रदान नहीं करता है। यह नहीं कह रहा कि आप इसे इस पर लागू नहीं कर पाएंगे, लेकिन मुझे संदेह है कि यह सही होना मुश्किल होगा और बहुत ही गंभीर रूप से भी बहुत बुरा होगा। –

+0

@KentBoogaart हां, जावा निरंतर कार्यों के समान कुछ भी प्रदान नहीं करता है, आपको इसे स्वयं ही कोड करना होगा। निजी तौर पर, मैं निरंतर कार्यों को एक खराब स्पर्श देखता हूं, लेकिन यदि आप इसमें हैं, तो आप लाइटवॉल्फ ढांचे में देख सकते हैं: http://lightwolf.sourceforge.net/index.html – bezmax

+0

और पढ़ रहे थे।ऐसा लगता है कि मैं प्रकृति में कुछ समान प्राप्त करने के लिए कांटा/सामान में शामिल हो सकता हूं, हालांकि यह सुनिश्चित नहीं है कि यह कितना सुरुचिपूर्ण/रखरखाव होगा। –

1

मुझे लगता है कि java.util.concurrent पैकेज में आपके द्वारा देखी जाने वाली अधिकांश कक्षाएं/कार्यक्षमताएं हैं।

विशेष रूप से, इन पर एक नज़र डालें:

  1. ThreadPoolExecutor
  2. Executors
  3. CompletionService
1

एंड्रॉयड Javas संगामिति पुस्तकालय के लिए समर्थन हासिल है, लेकिन आप AsyncTask जो यूआई धागे पर और पृष्ठभूमि में दोनों पर कार्रवाई चल समर्थन करता है इस पर गौर करना चाहिए।

यहाँ एक एक कार्य की एक छोटी सी उदाहरण है:

private class CharCountTask extends AsyncTask<String, Integer, Long> { 
    protected Long doInBackground(String... in) { 
    long result = 0; 
    for(int i=0,n=in.length; i<n; i++) { 
     result += in[i].length(); 
     publishProgress((int) (i/(double) count) * 100); 
    } 
    return result; 
    } 

    protected void onProgressUpdate(Integer... progress) { 
    // update progress here 
    updateProgressBar(progress[0]); 
    } 

    protected void onPostExecute(Long result) { 
    // update the UI here 
    setTotalChars(result); 
    } 
} 

इसका इस्तेमाल करने के लिए: https://github.com/dtag-dbu/task4java/ पर Task4Java ढांचे पर

new CharCountTask().execute("first", "second", "third"); 
0

देखो।

यह ढांचा मानक जावा पुस्तकालयों पर बनाया गया था और एंड्रॉइड पर भी चलता है। वर्तमान में हम इस ढांचे की शक्ति दिखाने के लिए एक नमूना आवेदन बना रहे हैं।