jdk1.4 构建 java多线程,并发设计框架 (二)
2008-12-06 09:56
726 查看
一个多线程并发排队
/**
* 线程请求队列,用来处理多线程并发排队.
* 实际用的是先进先出的堆栈 Queue,默认队大小为128
* @author guishuanglin 2008-11-3
*
*/
public class ConcurrentQueue {
private Queue QUEUE;
private int QUEUE_SIZE = 128;
private String QUEUE_NAME = "Queue";
public ConcurrentQueue() {
QUEUE = new Queue();
printQueueSize();
}
public ConcurrentQueue(int size) {
QUEUE_SIZE = size;
QUEUE = new Queue();
printQueueSize();
}
public ConcurrentQueue(int size,String name) {
QUEUE_SIZE = size;
QUEUE_NAME = QUEUE_NAME+"["+name+"]";
QUEUE = new Queue();
printQueueSize();
}
/**
* 入队
* @param call
*/
public synchronized void enQueue(Object call) {
while (QUEUE.size() > QUEUE_SIZE) {
try {
System.out.println(QUEUE_NAME+" wait enQueue....");
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
QUEUE.add(call);
notifyAll();
//System.out.println("入队");
}
/**
* 出队
* @param call
*/
public synchronized Object deQueue() {
Object call;
while (QUEUE.isEmpty()) {
try {
System.out.println(QUEUE_NAME+" wait deQueue....");
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
call = QUEUE.poll();
notifyAll();
//System.out.println("出队");
return call;
}
/**
* 打印当前队大小
* @date 2008-11-4
*/
public int size(){
return QUEUE.size();
}
/**
* 清空队
* @date 2008-11-4
*/
public void clear(){
QUEUE.clear();
}
/**
* 测试队是否有元素
* @date 2008-11-4
*/
public boolean isEmpty(){
return QUEUE.isEmpty();
}
/**
* 打印当前队大小
* @date 2008-11-4
*/
private void printQueueSize(){
System.out.println("Concurrent queue size: "+QUEUE_SIZE);
}
}
/**
* 线程请求队列,用来处理多线程并发排队.
* 实际用的是先进先出的堆栈 Queue,默认队大小为128
* @author guishuanglin 2008-11-3
*
*/
public class ConcurrentQueue {
private Queue QUEUE;
private int QUEUE_SIZE = 128;
private String QUEUE_NAME = "Queue";
public ConcurrentQueue() {
QUEUE = new Queue();
printQueueSize();
}
public ConcurrentQueue(int size) {
QUEUE_SIZE = size;
QUEUE = new Queue();
printQueueSize();
}
public ConcurrentQueue(int size,String name) {
QUEUE_SIZE = size;
QUEUE_NAME = QUEUE_NAME+"["+name+"]";
QUEUE = new Queue();
printQueueSize();
}
/**
* 入队
* @param call
*/
public synchronized void enQueue(Object call) {
while (QUEUE.size() > QUEUE_SIZE) {
try {
System.out.println(QUEUE_NAME+" wait enQueue....");
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
QUEUE.add(call);
notifyAll();
//System.out.println("入队");
}
/**
* 出队
* @param call
*/
public synchronized Object deQueue() {
Object call;
while (QUEUE.isEmpty()) {
try {
System.out.println(QUEUE_NAME+" wait deQueue....");
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
call = QUEUE.poll();
notifyAll();
//System.out.println("出队");
return call;
}
/**
* 打印当前队大小
* @date 2008-11-4
*/
public int size(){
return QUEUE.size();
}
/**
* 清空队
* @date 2008-11-4
*/
public void clear(){
QUEUE.clear();
}
/**
* 测试队是否有元素
* @date 2008-11-4
*/
public boolean isEmpty(){
return QUEUE.isEmpty();
}
/**
* 打印当前队大小
* @date 2008-11-4
*/
private void printQueueSize(){
System.out.println("Concurrent queue size: "+QUEUE_SIZE);
}
}
相关文章推荐
- jdk1.4 构建 java多线程,并发设计框架 使用列子(五)
- jdk1.4 构建 java多线程,并发设计框架 使用列子(一)
- jdk1.4 构建 java多线程,并发设计框架 使用列子(六)
- jdk1.4 构建 java多线程,并发设计框架 (三)
- jdk1.4 构建 java多线程,并发设计框架 (四)
- jdk1.4 构建 java多线程,并发设计框架 使用列子(四)
- jdk1.4 构建 java多线程设计框架 (一)
- jdk1.4 构建 java多线程,并发设计框架 (五)
- jdk1.4 构建 java多线程,并发设计框架 使用列子(三)
- jdk1.4 构建 java多线程,并发设计框架 使用列子(二)
- 多线程开发的捷径:构建Java并发模型框架
- 多线程开发的捷径:构建Java并发模型框架
- 多线程开发的捷径:构建Java并发模型框架
- Java并发框架——AQS之如何使用AQS构建同步器
- 实现 Java 多线程并发控制框架
- 构建Java并发模型框架
- Java 多线程并发控制框架
- java多线程:jdk并发包的总结(转载)
- Java多线程之并发协作生产者消费者设计模式
- 用java构建企业级自动化框架(第四篇-构建框架分布式并发执行测试用例功能1)