Блокировка с помощью ReentrantLock в Java
Я пытаюсь реализовать в плейлисте в Java. Единственная проблема заключается в том, что populatePlaylist() немного медленный и должен быть заблокирован. Я написал этот код, но он не работает.
private static final Lock lock = new ReentrantLock();
public Playlist(Context context, int length, boolean isLocked) {
lock.lock();
this.mContext = context;
this.populatePlaylist(length);
// If the playlist is locked we do not unlock it.
// wait for someone to do it manually.
if (!isLocked)
lock.unlock();
}
public void unlock() {
lock.unlock();
}
Когда конструктор вызывается во второй раз, он просто выполняет весь код, хотя unlock() никогда не вызывался.
РЕДАКТИРОВАТЬ: Вот что я пытаюсь сделать. Класс плейлиста - это просто представление плейлиста (сюрприз:)). Заполнение списка воспроизведения может быть немного медленным, поэтому я делю класс списка воспроизведения между разными частями программы, чтобы избежать загрузки списка воспроизведения более одного раза. Да, плейлист создается только один раз в каждой теме. Один режим пользовательского интерфейса, один раз фоновый поток, другие другие места.
Плейлист статичен. Внутри "populateplaylist" код выглядит примерно так:
if (playlist.isEmpty()) { create_playlist } else {nothing}