我正在尝试在 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()。
编辑:这是我尝试做的。播放列表类只是播放列表的表示(惊喜:))。生成播放列表可能有点慢,所以我在程序的不同部分之间共享播放列表类,以避免多次加载播放列表。是的,播放列表在每个线程中只创建一次。一种是 UI 模式,一次是后台线程,一次是其他地方。
播放列表是静态的。在“populateplaylist”中,代码看起来有点像这样:
if (playlist.isEmpty()) { create_playlist } else {nothing}