Сокеты - довольно традиционный способ выполнения IPC, но если вы действительно хотите избежать их, вы могли бы найти обходной путь, используя локальную файловую систему. Вы не захотите использовать стандартные операции чтения / записи файлов, поскольку вы, скорее всего, захотите эффективно реализовать очередь в файловой системе.
Если бы I собирался реализовать IPC через файловую систему, я бы, вероятно, использовал SQLite (, который может быть поточно-ориентированным при компиляции) и имел бы одну таблицу для каждого слушателя. Вероятно, я бы использовал таблицу из одного столбца для вставки сообщения, и слушатель просто вытянул бы строку с самым низким rowid , а затем удалил указанную строку.
Но мой подход совсем не специфичен для Java, поэтому могут быть более эффективные способы сделать это с помощью Java (например, ответ @ darthcoder).