`
Tristan_S
  • 浏览: 383451 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

泛型的使用 + 阻塞队列

 
阅读更多
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++等面向对象语言中扮演着重要角色。标题中的“支持多线程和泛型的阻塞队列”意味着我们讨论的是一个能够同时处理多...

    C例子:队列(顺序存储方式)

    此外,队列还可以有多种变体,如双端队列(deque)允许在两端进行入队和出队操作,优先级队列(priority queue)按照优先级决定元素的出队顺序,以及阻塞队列(blocking queue)在队列为空或满时能够阻塞相应操作,...

    对Linux平台OCI接口断网阻塞问题的处理.pdf

    【处理方法】为解决上述问题,文章提出了一个结合泛型、线程和信号量的阻塞式任务队列方案。在创建数据库连接时,创建一个任务线程来执行接口函数。使用泛型确保接口函数可以适应不同返回类型的任务。任务线程在获取...

    c++多线程安全的消息队列模板

    3. **模板(Template)**:C++模板提供了一种泛型编程的方法,允许我们为不同类型的数据创建通用的消息队列。通过模板,我们可以创建一个可以处理任何类型的对象的消息队列。 4. **消息队列的基本结构**:一个简单...

    cpp-cc等待队列易于构建并跨平台

    4. **设计模式**:可能会涉及到生产者消费者模型,或者其他并发设计模式,如阻塞队列,这些都与等待队列密切相关。 5. **性能优化**:高效的等待队列可能涉及到最小化上下文切换、减少锁竞争等优化策略,以提高系统...

    基于c++11的轻量级Web并发服务器,基于小根堆实现了定时器,利用单例模式与阻塞队列实现异步的日志系统.zip

    使用Epoll与Reactor高并发模型, C++是一种面向对象的计算机程序设计语言,由美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普博士在20世纪80年代初期发明并实现(最初这种语言被称作“C with Classes”带类的C)。它是...

    javalruleetcode-DatabaseAndSort:秋招常见算法的实现

    java lru leetcode 概述:秋招常见算法题Java实现 1:annotation注解 使用annotation注解实现自动获取类信息,注解还可用于日志打印,切面等功能。...阻塞队列,默认队列大小为10,构造函数可以修改阻塞队列大小。 2.

    Java多线程并发执行demo代码实例

    在上面的代码中,我们可以看到阻塞队列的使用,例如`private final BlockingQueue&lt;Future&lt;T&gt;&gt; queue = new LinkedBlockingQueue();`。阻塞队列是一种特殊的队列,它可以在队列为空或者队列满时阻塞线程的执行。阻塞...

    第30章编程题1

    在本章的编程题中,我们有两个主要的知识点:泛型容器`Container&lt;T&gt;`的实现及其测试,以及线程安全的同步队列`SyncQueue&lt;T&gt;`的设计。首先,让我们详细讨论`Container&lt;T&gt;`的实现及其测试。 `Container&lt;T&gt;`是一个泛型...

    01_AsyncTask_演示线程阻塞

    如果超过这个数量,新的任务会被阻塞,直到当前队列中有任务完成。此外,如果在`onCreate()`或`onResume()`方法中创建并启动`AsyncTask`,并且在`onPause()`或`onDestroy()`中没有取消任务,可能会导致内存泄漏。 ...

    2018中级java工程师面试总结

    - 阻塞队列在队列为空时,获取元素的线程会被阻塞,直到队列有元素;在队列满时,尝试插入元素的线程也会被阻塞,直到队列有空位。这种方式在多线程同步和资源管理中非常有用,如`java.util.concurrent`包下的`...

    深入.NET平台和C#编程第六章课后习题4

    习题可能要求实现一个泛型栈或队列,或者设计一个能处理不同类型对象的通用数据访问接口。 Lambda表达式是C#3.0引入的,简化了对委托和 LINQ 的使用。它们提供了一种简洁的方式来表示匿名函数,通常用于简化查询...

    java初学者编程练习题+程序代码

    11. **泛型**:理解泛型的概念,掌握泛型类、泛型方法的使用。 12. **接口与抽象类**:理解接口与抽象类的区别,以及如何实现接口和继承抽象类。 13. **反射**:了解反射机制,能够动态地获取类的信息和调用方法。...

    Java面试题,看看你会几道

    泛型使用时需要用符号指定泛型的类型,例如:List。泛型与普通类的区别在于泛型可以在编译时检查类型安全,而普通类不会进行类型检查。 四、Java中的集合框架 Java中的集合框架是指Java提供的用于存储和操作数据的...

    c# in one step

    4. **集合与数据结构**:学习数组、列表、队列、栈等常见数据结构的使用,以及如何操作这些集合。 5. **异常处理**:了解异常处理机制,学会使用try-catch语句来捕获和处理程序运行时的错误。 6. **LINQ(Language...

    Java并发程序设计 并发

    - **概念**:阻塞队列是一种特殊的队列,它会在队列为空时阻塞获取元素的线程,或者在队列满时阻塞插入元素的线程。 - **方法**: - `put(E e)`:将指定元素添加到此队列中,如果队列已满,则等待队列可用。 - `...

    java基本组件使用

    传统IO基于阻塞模型,而NIO(New IO)引入了非阻塞和选择器的概念,提高了性能。了解并掌握BufferedReader、FileInputStream、OutputStream、Selector、Channel等概念,能帮助开发者更好地处理数据传输。 6. 泛型 ...

Global site tag (gtag.js) - Google Analytics