У меня есть следующие Protobuf тзды определены:Является ли protobuf в java потокобезопасным?
message Counts {
repeated int32 counts = 1;
}
, который распределяется между нитями R
и W
как строитель:
private final Counts.Builder countsBuilder;
Тема R
будет читать только из countsBuilder
и W
будет писать только countsBuilder
, Общий строитель будет считываться, записываться и (в какой-то момент), построенным &, отправленным по сети.
AFAIK, одновременное считывание сообщений в порядке, но что-либо еще должно быть синхронизировано разработчиком на более высоком уровне? Значит, я не могу писать и читать в общий строитель одновременно?
Если это не по сути является поточно-безопасным, я думаю о том, чтобы использовать какой-то поточно-безопасный Collection<Integer>
, который я буду использовать для чтения/записи и в какой-то момент создаю совершенно новое сообщение прямо перед отправкой это по сети. Или я чего-то не хватает?
Спасибо!
EDIT 1: Я использую Protobuf 2.4.1 и Java 6
EDIT 2: Некоторые термины и орфографические исправления.
Как бы вы предлагали * «писать в общее сообщение»? Сообщения неизменяемы. Вам придется писать в * строитель *. –
К сожалению, я использовал неправильную терминологию. Я бы написал строителю и конвертировал в сообщение при отправке. – Howie