Эквивалент TPL для Java / Android - PullRequest
6 голосов
/ 30 июня 2011

Мне любопытно узнать, есть ли что-то похожее на библиотеку параллельных задач из C # в Java и / или Android SDK. Исходя из опыта C #, нас учат, что создание нового потока является относительно тяжелой операцией, и мы проинструктированы использовать пул потоков, или совсем недавно, Задачи.

Так что, на мой взгляд, уровень абстракции, который приносит Tasks, был бы идеальным ... есть что-нибудь подобное или даже пул потоков? или все это просто связано с созданием новой темы или моей собственной группы потоков

Ответы [ 6 ]

3 голосов
/ 30 июня 2011

Конечно, это так.Вы можете прочитать больше об этом здесь: Исполнители

Кроме того, вы можете просмотреть всю тему параллелизма на той же странице: Параллельность

1 голос
/ 30 июня 2011

В Android есть поддержка библиотеки параллелизма 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);
  }
}

Чтобы использовать это:

new CharCountTask().execute("first", "second", "third");
1 голос
/ 30 июня 2011

По словам разработчиков Java, программирование параллелизма Java должно быть направлено на использование нового API параллелизма.

Проверка: http://download.oracle.com/javase/1.5.0/docs/guide/concurrency/index.html

1 голос
/ 30 июня 2011

Я думаю, что пакет java.util.concurrent имеет большинство классов / функций, которые вы ищете.

В частности, взгляните на это:

  1. ThreadPoolExecutor
  2. Исполнители
  3. CompletionService
1 голос
/ 30 июня 2011

См. http://developer.android.com/reference/java/util/concurrent/package-summary.html для информации о пуле потоков.

0 голосов
/ 09 мая 2014

Посмотрите на каркас Task4Java на https://github.com/dtag-dbu/task4java/.

Эта структура была построена на стандартных библиотеках Java и работает также на Android. В настоящее время мы создаем пример приложения, чтобы продемонстрировать всю мощь этого фреймворка.

...