用java语言设计一个先进先先出的队列类

 我来答
qinpeng100423
2015-09-21 · TA获得超过254个赞
知道小有建树答主
回答量:85
采纳率:0%
帮助的人:62.7万
展开全部

代码仅供参考,如有问题,欢迎追问!

Basket:

import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
/**
 * 定义装苹果的篮子
 * 
 * @author stone
 * @version 2013-05-21
 */
public class Basket {

    // 篮子,能够容纳Integer.MAX_VALUE个苹果
    BlockingQueue<Object> basket = new LinkedBlockingQueue<Object>(Integer.MAX_VALUE);

    // 生产苹果,放入篮子
    public void produce(Object obj) throws InterruptedException {
// put方法放入一个苹果,若basket满了,等到basket有位置
basket.put(obj);
    }

    // 消费苹果,从篮子中取走
    public Object consume() throws InterruptedException {
// take方法取出一个苹果,若basket为空,等到basket有苹果为止(获取并移除此队列的头部)
return basket.take();
    }

}

BaksetTest:

import org.apache.log4j.Logger;
public class BaksetTest {
    
    static Logger logger = Logger.getLogger(BaksetTest.class);
    static Basket basket = new Basket();
    
    public static void main(String[] args) throws Exception {
try{
    Consume con = new Consume(basket);
    Thread thread = new Thread(con);
    thread.start();
    Integer num = 0;
    while(true){//循环放入数据到队列
num++;
basket.produce(num);
Thread.sleep(1*1000);
if(num>1000000) num =0;
    }
} catch( Exception e ){
    logger.error("error : ", e);
}
    }

}

//消费线程,用来消费队列里堆积数据,此线程为阻塞状态
class Consume implements Runnable {
    
    Logger logger = Logger.getLogger(BaksetTest.class);
    Basket basket;
    
    public Consume (Basket basket){
this.basket = basket;
    }

    @Override
    public void run() {
try{
    while(true){//等待从队列取出数据
System.out.println("取出:" + basket.consume());
    }
} catch ( Exception e ){
    logger.error("error : ", e);
}
    }
}
电脑的老巢
2015-09-23 · TA获得超过278个赞
知道小有建树答主
回答量:594
采纳率:78%
帮助的人:99.8万
展开全部
package zhidao;

import java.util.ArrayList;

import org.junit.Test;

import com.sun.corba.se.impl.orb.ParserTable.TestAcceptor1;
import com.sun.xml.internal.bind.v2.schemagen.xmlschema.List;

public class Queue {

ArrayList<Object> list;

public Queue(){
//定义一个list,用来存放数据
list = new ArrayList<>();
}

//进
public void in(Object obj){
list.add(obj);
}

//出
public Object out(){
//获取最先进入的元素
Object obj = list.get(0);
//删除最先进入的元素
list.remove(obj);
return obj;
}

//获取队列长度
public int length(){
return list.size();
}

@Test
public void test(){

Queue queue = new Queue();

queue.in(1);
queue.in(2);
queue.in(3);
queue.in(100);

int length = queue.length();
for(int i = 0;i<length;i++){
//预测输出1 2 3 100
System.out.println(queue.out());
}
}

}


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
徽乱饮01
2015-09-21 · TA获得超过175个赞
知道答主
回答量:880
采纳率:40%
帮助的人:174万
展开全部
用java语言设计一个先进先先出的队列类这里资料挺全的~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式