Эквивалент параллельной библиотеки задач в Java - PullRequest
10 голосов
/ 07 ноября 2010

Полагаю, в Java нет эквивалента параллельных библиотек задач (.NET 4.0). Это правда? Какие улучшения предлагает эта функция .NET, чего нет в параллелизме Java.

Ответы [ 4 ]

10 голосов
/ 07 ноября 2010

Java имеет пакет java.util.concurrent, а также fork / join Framework .Форк / объединение запланировано для включения в Java 7, но его можно загрузить сейчас и использовать с Java 6.

Хорошая книга для понимания параллелизмаЯва Параллелизм Java на практике , Брайан Гетц и др.

3 голосов
/ 29 мая 2014

Библиотека Habanero-Java (HJ-lib) - это новая реализация библиотеки Habanero-Java (HJ), модели педагогического параллельного программирования, разрабатываемой в Университете Райса . HJ-lib способен выражать множество различных форм параллельных шаблонов, включая параллелизм данных, параллелизм конвейера, параллелизм потока, параллелизм цикла и параллелизм «разделяй и властвуй».

HJ-lib объединяет широкий спектр конструкций параллельного программирования (например, асинхронные задачи, фьючерсы, задачи, управляемые данными, общие сведения, барьеры, фазеры, транзакции, акторы) в единую модель программирования, которая допускает уникальные комбинации этих конструкций ( например, вложенные комбинации параллелизма задачи и актера).

HJ-lib построен с использованием лямбда-выражений и может работать на любой Java 8 JVM. Старые JVM могут быть ориентированы на совместимость с внешними инструментами преобразования байт-кода. Среда выполнения HJ отвечает за управление созданием, выполнением и завершением задач HJ, и включает в себя как планировщики разделения работы, так и кражи работы.

HJ-lib также является привлекательным инструментом для преподавателей благодаря многочисленным образовательным ресурсам, доступным на курсе 1010 * COMP 322 второго уровня , предлагаемом в Университете Райса. Эти ресурсы также могут быть использованы для изучения API библиотеки. Javadoc для API также доступен .

Вот простая версия HelloWorld:

import static edu.rice.hj.Module1.*;

public class HelloWorld {

    public static void main(final String[] args) {

        launchHabaneroApp(() -> {

            finish(() -> {
                async(() -> System.out.println("Hello"));
                async(() -> System.out.println("World"));
                async(() -> System.out.println("in"));
                async(() -> System.out.println("HJ-lib"));
            });

        });
    }
}

Дополнительные примеры для различных параллельных конструкций доступны на веб-сайте курса COMP 322 .

0 голосов
/ 12 марта 2019

Из того, что я знаю, нет эквивалента в Java.

Я написал библиотеку Java Task, основанную на TPL. Он не поддерживает все функции TPL, но в то время соответствовал моим требованиям.

Github: https://github.com/BrunoMNDantas/TPL4J

Maven: https://mvnrepository.com/artifact/com.github.brunomndantas/tpl4j

0 голосов
/ 09 сентября 2018

Да. Java не имеет эквивалента параллельной библиотеки задач - TPL (.NET 4.0). Вы правы в своем вопросе (главное слово - NET 4.0). TPL является «разделяемой» - универсальной унифицированной библиотекой .NET для ЛЮБОГО .NET приложения. Это означает, что вы можете иметь единую общую асинхронную логику для любого приложения .NET (WPF, WinForms, Xamarin.Forms, ASP.NET, ...) с действительно асинхронным (неблокирующим пользовательским интерфейсом) подходом. Ява не имеет. JavaFX имеет специальный неблокирующий класс Task, Swing - фоновые рабочие, Android - собственный подход. ... Так называемый пакет Java util.concurrency не имеет каких-либо незамерзающих решений для пользовательского интерфейса (JavaFX, Swing).

...