Вы не хотите PipedWriter
;это только для связи между потоками в одном и том же процессе.Вы также не можете использовать неназванный канал ОС, так как между процессами нет никакой связи.Вы могли бы использовать ОС fifo (если вы работаете в Unix, когда вы делаете это с помощью системной команды mkfifo
; я не знаю достаточно эквивалентного API для Windows, чтобы помочь там)но я понятия не имею, насколько хороша Java для обработки таких именованных каналов.
Простейшие механизмы - использовать отслеживаемый файл или сокет сервера, который привязан только к порту на локальном хосте, 127.0.0.1.(При такой привязке становится невозможным получить доступ к сокету с компьютера без какой-либо локальной программы. Или с соответствующим образом настроенным туннелем SSH.) Преимущество и недостаток метода watched-file заключается в том, что ему нужно где-то, что оба процесса могут видеть (и предположительно записывать).Административный сокет несколько более открыт, но гораздо проще обрабатывать двусторонние соединения;если это имеет значение для вас, считайте, что у Java есть хорошая (если немного низкоуровневая для моих вкусов) поддержка сокетов.
Если вы думаете о совместном файловом решении, подумайте, стоит ли делать этоподать базу данных;есть драйвер JDBC для SQLite, который поддерживает безопасный параллельный доступ (и защищает от проблем с одновременными записями, держу пари, что вы никогда не задумывались).Это также может означать, что вы можете избежать написания специального клиента;Есть множество существующих инструментов.