Я не знаю ни одного - и, честно говоря, это было бы трудно сделать таким аккуратным способом. Сторона заправки в порядке; Java прекрасно справляется с многопоточностью ... но на данный момент язык просто не поддерживает соответствующие функции.
Одна из изящных конструктивных особенностей LINQ заключается в том, что все основано на интерфейсах, а затем методы расширения используются для добавления дополнительной функциональности. Это позволяет свободно читать код - представьте, что вам нужно написать:
IObservable<int> = Observable.Select(
Observable.Where(
source, x => x.SomeCondition)
x => x.SomeProjection);
Ик. Метод расширения гораздо более изящен:
IObservable<int> = source.Where(x => x.SomeCondition)
.Select(x => x.SomeProjection);
Теперь версия Java могла бы основываться на абстрактном базовом классе, но это утратило бы некоторую элегантность.
Далее идут лямбда-выражения и преобразования групп методов - это действительно фундаментально для LINQ в целом; ближайший эквивалент в Java (анонимные внутренние классы) слишком уродлив, чтобы использовать его везде, где вы бы использовали лямбда-выражение в C #.
В принципе, Java-версия Rx была бы возможна, но она не была бы столь же элегантной, как версия C # - возможно, поэтому, насколько я знаю, этого не было сделано. Для Java могут существовать другие «асинхронно-управляемые» библиотеки, но они вряд ли будут такими же полными и аккуратными, как Rx.
Возможно , что изменения в Java 7 сделают это более осуществимым; насколько я знаю, методы расширения не вводятся, но абстрактная версия базового класса будет разумной, если синтаксис лямбды окажется в порядке ...