Взаимное исключение может быть выпущено только потоком, который получил его, в то время как можно предупредить о семафоре от любого другого потока (или процесс), таким образом, семафоры более подходят для некоторых проблем синхронизации как производитель-потребитель.
В Windows, двоичные семафоры больше похожи на объекты-события, чем взаимные исключения.
Вы можете использовать JRI . С этого веб-сайта:
JRI - это интерфейс Java / R, который позволяет запускать R внутри Java приложения как единый поток. В основном он загружает динамическую библиотеку R в Java и предоставляет Java API для R функциональность. Он поддерживает как простые вызовы функций R и полный запуск REPL.
Это часть проекта rJava (который позволяет вызывать Java из R)
У меня был хороший опыт интеграции JGR, Java Gui для R в мое Java-приложение.
Обратите внимание, что REngine не является многопоточным. Таким образом, вам необходимо сериализовать доступ к REngine (например, разрешив ему работать в собственном потоке). Ваше приложение и JGR будут обновлять переменные R и фреймы данных с помощью JRI. Самое замечательное в использовании JGR заключается в том, что доступна консоль R, так что пользователь может получить доступ к данным, обновляемым через ваше приложение, поиграть с ними, даже изменить их на лету, построить график и т. Д .; Эта комбинация скомпилированного (Java) и интерпретируемого (R) режимов вполне удовлетворительна с точки зрения взаимодействия с пользователем.
Кроме того, похоже, что проект JGR вполне жив; Я использовал JGR 1.4, сейчас он 1.7 (обновлено в июне 2009 г.), так что обязательно скачайте его и попробуйте.
Если это сработает хорошо, и вы '
попробуйте RCaller, http://www.mhsatman.com/rcaller.php