Ответ 1
Я не могу гарантировать, что WebSocketClient
на 100% безопасен по потоку, но могу сказать, что он должен быть потокобезопасным в определенной степени.
Рассматривая исходный код мы видим, что частный метод initializeClient
синхронизируется:
private synchronized void initializeClient() throws IOException
и что метод connect
использует Executor
:
// Execute the connection on the executor thread
executor.execute(promise);
Документация класса ничего не говорит о безопасности потоков, но вызов синхронизированного метода initializeClient
из метода connect
и использование Executor
являются явными признаками поддержки некоторой формы многопоточности.
== Правка ==
Безопасность потоков часто гарантируется только для определенных типов операций. Например, это может быть гарантировано только для операций чтения, а не для операций записи. В этом заключается роль документации для определения условий безопасности потоков. Замечание Серхио Монторо прав, если один поток изменяет объект во время его использования другим потоком, могут произойти странные вещи. В случае WebSocketClient
безопасность потока, безусловно, по крайней мере ограничена немодификацией объекта другими потоками или синхронизированной и согласованной модификацией внутреннего состояния WebSocketClient
.