package org.aisen.weibo.sina.service.publisher; import org.aisen.weibo.sina.support.bean.PublishBean; import java.util.concurrent.LinkedBlockingQueue; public class PublishQueue extends LinkedBlockingQueue<PublishBean>{ private static final long serialVersionUID = -3658869016561603328L; private PublishQueueCallback callback; public PublishQueue(PublishQueueCallback callback) { this.callback = callback; } @Override public PublishBean poll() { PublishBean bean = super.poll(); if(callback != null && bean != null) callback.onPublishPoll(bean); return bean; } @Override public void clear() { super.clear(); } @Override public boolean add(PublishBean e) { boolean r = super.add(e); if(r && callback != null) callback.onPublishAdd(e); return r; } @Override public PublishBean peek() { PublishBean bean = super.peek(); if(bean != null && callback != null) callback.onPublishPeek(bean); return bean; } public interface PublishQueueCallback { public void onPublishPoll(PublishBean bean); public void onPublishAdd(PublishBean bean); public void onPublishPeek(PublishBean bean); } }