Допустим я пишу thread-safe класс:
| Код | public class ThreadSafe { private Vector<String> vector; private final ReentrantLock lock = new ReentrantLock(true); /** Обычный метод в этом классе выглядит так */ public int someMethod() { lock.lock(); try { // Do thread-safe things and change vector vector.clear() } finally { lock.unlock(); } } /** Правильно ли писать данный метод без синхронизации? */ public Vector<String> getVector() { return vector; } }
|
Конечно, я бы не задумывался о какой-либо синхронизации если бы в моем классе работа шла только с классом Vector, на самом деле у меня полно кода, который надо синхронихировать, поэтому мой вопрос относится только к методу getVector(), а именно если весь класс синхронизирован через локи, то надо ли синхронихировать thread-safe коллекции когда работа идет только с ними? |