DelayQueue小例子
来源:互联网 发布:制作电子报刊的软件 编辑:程序博客网 时间:2024/06/13 23:26
网吧上网:
package Test1;import java.util.Calendar;import java.util.concurrent.DelayQueue;import java.util.concurrent.Delayed;import java.util.concurrent.TimeUnit;public class DelayQueueTest implements Runnable { DelayQueue<Customer1> queue = new DelayQueue<Customer1>(); public void onCumputer(Integer id, String name, Integer money) { Customer1 customer = new Customer1(id, name, money); queue.put(customer); System.out.println("身份证:" + id + "姓名:" + name + "上机时间" + money); } public void outCumputer(Customer1 customer) { System.out.println("身份证:" + customer.getId() + "姓名:" + customer.getName() + "下机"); } @Override public void run() { while (true) { System.out.println("检查....."); try { Customer1 customer = queue.take(); outCumputer(customer); } catch (InterruptedException e) { e.printStackTrace(); } } } public static void main(String[] args) { DelayQueueTest queueTest = new DelayQueueTest(); System.out.println("开始营业..."); new Thread(queueTest).start(); queueTest.onCumputer(123, "张三", 3); queueTest.onCumputer(124, "张三", 5); queueTest.onCumputer(126, "张三", 10); while (true) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Calendar.getInstance().get(Calendar.SECOND)); } }}class Customer1 implements Delayed { // 身份证号 private Integer id; // 姓名 private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } // 下机时间 一元一秒 private long endTime; public Customer1(Integer id, String name, Integer money) { this.id = id; this.name = name; this.endTime = money * 1000 + System.currentTimeMillis(); } // 设置优先级 @Override public int compareTo(Delayed o) { Customer1 c = (Customer1) o; return this.endTime - c.endTime > 0 ? 1 : (this.endTime - c.endTime < 0 ? -1 : 0); } // 判断过期时间 @Override public long getDelay(TimeUnit unit) { return this.endTime - System.currentTimeMillis(); }}
从上面的运行结果可以看出,程序并没有一遍一遍地扫描队列中的对象,而是在队列中没有对象符合条件时阻塞。
阅读全文
0 0
- DelayQueue小例子
- DelayQueue
- DelayQueue
- DelayQueue
- DelayQueue
- DelayQueue
- DelayQueue
- DelayQueue
- DelayQueue
- delayqueue
- DelayQueue
- 小例子
- DelayQueue 队列
- DelayQueue 用法
- DelayQueue Demo
- DelayQueue 试用
- java DelayQueue
- DelayQueue Demo
- angularjs——service
- android自定义View探索3(onMeasure深入分析一)
- 第一篇文章通常是没有意义的,但是还是会有人看,比如你!
- AE#GP之缓冲区
- MySql-You have an error in your SQL syntax; check the manual that corresponds to your MySQL server v
- DelayQueue小例子
- 排序总结
- SQL语句嵌套查询问题
- 内核线程创建
- 查看DLL导出函数的方法
- 监听页面 F5 ctrl+R 事件
- SQL Server DBA调优---大数据量查询记录数优化及原理探讨
- android高级控件-Fragment
- 树上的动态规划