В вашем примере нет необходимости иметь блок synchronize
d, если только несколько потоков не будут иметь доступ к одной и той же переменной out
.
Другими словами, если у вас есть несколько потоков, вызывающих networkSendData
одновременно, вы должны synchronize
метод. Вы не хотите, чтобы один поток вызывал flush
, в то время как другой поток находится на полпути выполнения метода write
.
public synchronized void networkSendData(byte[] data)
Вам также необходимо убедиться, что никакие потоки не обращаются к / не изменяют значение переменной out
, в то время как есть вероятность, что другой поток может быть в методе networkSendData
.
Это зависит от того, как сервер, который получает записанные данные, обрабатывает их. Если для обновления общей изменяемой переменной на основе того, что записано на сервер, используется несколько потоков, вам необходимо реализовать безопасность потоков.