Библиотека 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 .