Блокировка с помощью 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}

0 ответов

Другие вопросы по тегам