2011-06-30 24 views
6

Java ve/veya Android SDK'sındaki C# 'dan Görev Paralel Kitaplığı'na benzer bir şey olup olmadığını merak ediyorum. Bir C# arka planından geldiğimizde, yeni bir iş parçacığı yapmak göreceli olarak ağır bir işlemin yapıldığını ve iş parçacığı veya daha yakın zamanlarda Görevler'i kullanmayı öğrettiği öğretildi.Java/Android için TPL Eşdeğeri

Aklımda, Görevlerin getirdiği soyutlama seviyesi ideal olacak ... bunun gibi bir şey var mı, hatta iplik takımı mı? ya da her şey yeni bir Thread ya da my own threadpool

+0

"Ağır işlem" ifadesiyle ilgili olarak, bkz. Http://stackoverflow.com/questions/2117072/java-thread-creation-overhead – skaffman

+0

Bu sorunun 3 yaşında olduğunu gören herkesin durumuyla ilgili bir güncelleme var. sanat bugün Hala Executors ve Java 5 Concurrency şeylerini kullanıyor muyuz? Ya da Java 8 ya da RxJava gibi şeyler daha iyi çözen şeyler gibi yeni uygulamalar var mı? – Nilzor

cevap

3

Elbette öyle. Burada bu konuda daha fazla bilgi edinebilirsiniz: Ayrıca Executors

, aynı sayfada bütün eşzamanlılık konusunu genel bakış olabilir: Java geliştiricileri göre Concurrency

+0

Bir şey kaçırmadığım sürece, bu durum devamlılık desteği sağlamaz. Bunun üstüne uygulayamayacağınızı söylemiyorum, ama sanırım haklı olmanın çok zor olacağını ve çok mantıklı bir şekilde mantıklı olduğunu düşünüyorum. –

+0

@KentBoogaart Evet, Java devam eden görevlere benzer bir şey sağlamaz, hepsini tek tek kodlamanız gerekir. Şahsen, devam görevlerini kötü bir dokunuşla görüyorum, ama eğer buna katılıyorsanız, Lightwolf çerçevesine bakabilirsiniz: http://lightwolf.sourceforge.net/index.html – bezmax

+0

Daha fazlasını okudu.Ne kadar zarif/bakımlı olabileceğinden emin olmasa da, doğada benzer bir şeye ulaşmak için çatalı/birleştirici eşyaları kullanabiliyormuşum gibi görünüyor. –

1

Android Javas'ın eşzamanlılık kütüphanesi için desteği vardır ama eğer UI iş parçacığı üzerinde ve arka planda hem işlemleri çalışan destekler AsyncTask içine bakmak gerekir.

İşte bir görevin kısa bir örnektir:

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); 
    } 
} 

Kullanmak için: https://github.com/dtag-dbu/task4java/ at Task4Java çerçevesinde en

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

bak. Bu çerçeve standart Java kitaplıklarında oluşturuldu ve aynı zamanda Android'de de çalıştırılıyordu. Şu anda bu çerçevenin gücünü göstermek için örnek bir uygulama oluşturuyoruz.