在java中使用ReentrantLock锁定

时间:2013-07-20 14:14:35

标签: java multithreading locking reentrantlock

我正在尝试在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}

0 个答案:

没有答案