Мне нужен потолочный arraylist вот так.Java synchronized statement
public class BookingList {
private List<Booking> bookings;
public BookingList() {
bookings = Collections.synchronizedList(new ArrayList<Booking>());
}
@Override
public void addBooking(Booking booking)
{
synchronized (bookings) {
bookings.add(booking);
}
}
@Override
public void removeBooking(Booking booking)
{
synchronized (bookings) {
bookings.remove(booking);
}
}
}
Согласно Java док, при использовании Collections.synchronizedList нужно синхронизировать каждый доступ к списку. Я не уверен, будут ли мои синхронизированные блоки делать это?
Является ли мое использование синхронизированных блоков эквивалентно
... public synchronized void addBooking(Booking booking) { bookings.add(booking); }
Должен ли я использовать ReentrantLock как этот
private Lock lock = new ReentrantLock(); public void addBooking(Booking booking) { try { lock.lock; bookings.add(booking); } finally { lock.release(); } }
в этом случае: да! –
U может ссылаться на эту ссылку он будет решить вашу проблему [нажмите здесь] [1] [1]: http://stackoverflow.com/questions/3814325/how-to-create-synchronized-arraylist –