汎用的な使用+ブロックキュー


package queue;

import java.util.concurrent.ArrayBlockingQueue;

/**
 *  
 *   ArrayBlockingQueue
 */
public class QueueBank<E> {

	private final static int maxStoreSize = 100;
	public static QueueBank<FileBean> toBeQuery = new QueueBank<FileBean>("toBeQuery");
	public static QueueBank<String> stringQuery = new QueueBank<String>("StringQuery");
	ArrayBlockingQueue<E> queue = new ArrayBlockingQueue<E>(maxStoreSize);
	
	private String queueName = "";
	
	public QueueBank(String name){
		queueName = name;
	}
	
	public void put(E o) throws InterruptedException {
		queue.put(o);
	}
	
	public E get() throws InterruptedException {
		return (E) queue.take();
	} 
	
	public String getQueueName() {
		return queueName;
	}

	public void setQueueName(String queueName) {
		this.queueName = queueName;
	}

	public static void main(String[] args) throws InterruptedException {
		QueueBank<FileBean> q1 = QueueBank.toBeQuery;
		FileBean bean1 = new FileBean();
		bean1.setFileName("name1");
		bean1.setFileSize("size1");
		q1.put(bean1);
		
		FileBean r1 = q1.get();
		System.out.println(q1.getQueueName() + " : " +r1.getFileName() + " : "+ r1.getFileSize());
		
		QueueBank<String> q2 = QueueBank.stringQuery;
		q2.put("1");
		q2.put("2");
		q2.put("3");
		System.out.println(q2.getQueueName() + " : " +q2.get() + q2.get()+ q2.get()+ q2.get());
		
	}
	
}