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());
}
}
分享到:
相关推荐
阻塞队列是一种在多线程编程中广泛使用的并发数据结构,它在计算机科学和编程领域,特别是Java和C++等面向对象语言中扮演着重要角色。标题中的“支持多线程和泛型的阻塞队列”意味着我们讨论的是一个能够同时处理多...
此外,队列还可以有多种变体,如双端队列(deque)允许在两端进行入队和出队操作,优先级队列(priority queue)按照优先级决定元素的出队顺序,以及阻塞队列(blocking queue)在队列为空或满时能够阻塞相应操作,...
【处理方法】为解决上述问题,文章提出了一个结合泛型、线程和信号量的阻塞式任务队列方案。在创建数据库连接时,创建一个任务线程来执行接口函数。使用泛型确保接口函数可以适应不同返回类型的任务。任务线程在获取...
3. **模板(Template)**:C++模板提供了一种泛型编程的方法,允许我们为不同类型的数据创建通用的消息队列。通过模板,我们可以创建一个可以处理任何类型的对象的消息队列。 4. **消息队列的基本结构**:一个简单...
4. **设计模式**:可能会涉及到生产者消费者模型,或者其他并发设计模式,如阻塞队列,这些都与等待队列密切相关。 5. **性能优化**:高效的等待队列可能涉及到最小化上下文切换、减少锁竞争等优化策略,以提高系统...
使用Epoll与Reactor高并发模型, C++是一种面向对象的计算机程序设计语言,由美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普博士在20世纪80年代初期发明并实现(最初这种语言被称作“C with Classes”带类的C)。它是...
java lru leetcode 概述:秋招常见算法题Java实现 1:annotation注解 使用annotation注解实现自动获取类信息,注解还可用于日志打印,切面等功能。...阻塞队列,默认队列大小为10,构造函数可以修改阻塞队列大小。 2.
在上面的代码中,我们可以看到阻塞队列的使用,例如`private final BlockingQueue<Future<T>> queue = new LinkedBlockingQueue();`。阻塞队列是一种特殊的队列,它可以在队列为空或者队列满时阻塞线程的执行。阻塞...
在本章的编程题中,我们有两个主要的知识点:泛型容器`Container<T>`的实现及其测试,以及线程安全的同步队列`SyncQueue<T>`的设计。首先,让我们详细讨论`Container<T>`的实现及其测试。 `Container<T>`是一个泛型...
如果超过这个数量,新的任务会被阻塞,直到当前队列中有任务完成。此外,如果在`onCreate()`或`onResume()`方法中创建并启动`AsyncTask`,并且在`onPause()`或`onDestroy()`中没有取消任务,可能会导致内存泄漏。 ...
- 阻塞队列在队列为空时,获取元素的线程会被阻塞,直到队列有元素;在队列满时,尝试插入元素的线程也会被阻塞,直到队列有空位。这种方式在多线程同步和资源管理中非常有用,如`java.util.concurrent`包下的`...
习题可能要求实现一个泛型栈或队列,或者设计一个能处理不同类型对象的通用数据访问接口。 Lambda表达式是C#3.0引入的,简化了对委托和 LINQ 的使用。它们提供了一种简洁的方式来表示匿名函数,通常用于简化查询...
11. **泛型**:理解泛型的概念,掌握泛型类、泛型方法的使用。 12. **接口与抽象类**:理解接口与抽象类的区别,以及如何实现接口和继承抽象类。 13. **反射**:了解反射机制,能够动态地获取类的信息和调用方法。...
泛型使用时需要用符号指定泛型的类型,例如:List。泛型与普通类的区别在于泛型可以在编译时检查类型安全,而普通类不会进行类型检查。 四、Java中的集合框架 Java中的集合框架是指Java提供的用于存储和操作数据的...
4. **集合与数据结构**:学习数组、列表、队列、栈等常见数据结构的使用,以及如何操作这些集合。 5. **异常处理**:了解异常处理机制,学会使用try-catch语句来捕获和处理程序运行时的错误。 6. **LINQ(Language...
- **概念**:阻塞队列是一种特殊的队列,它会在队列为空时阻塞获取元素的线程,或者在队列满时阻塞插入元素的线程。 - **方法**: - `put(E e)`:将指定元素添加到此队列中,如果队列已满,则等待队列可用。 - `...
传统IO基于阻塞模型,而NIO(New IO)引入了非阻塞和选择器的概念,提高了性能。了解并掌握BufferedReader、FileInputStream、OutputStream、Selector、Channel等概念,能帮助开发者更好地处理数据传输。 6. 泛型 ...