Linux的五个查找命令:find,locate,whereis,which,type
2015-07-29 15:56
856 查看
知识点:
1、1.5以上的线程池
2、阻塞队列
实现:
1、排号器(队伍)
2、控制类
3、业务类
4、测试类
需完善的地方:
1、防止重复排队
2、针对不同的业务使用多个排队器
1、1.5以上的线程池
2、阻塞队列
实现:
1、排号器(队伍)
import java.util.concurrent.ArrayBlockingQueue; /** * 排队器 * * @author luoqinglong * @date 2014-3-23 */ public class BuyQueue extends ArrayBlockingQueue<String> { /** * @param capacity */ public BuyQueue(int capacity) { super(capacity); // TODO Auto-generated constructor stub } }
2、控制类
import java.util.HashMap; import java.util.Map; import java.util.concurrent.Callable; import java.util.concurrent.Future; /** * 会员控制器 * * @author luoqinglong * @date 2014-3-23 */ public class MemberAction { /** * 提交订单 */ public void saveOrder(final String memberId) { // TODO INSERT DB try { // 排队 Test.getBuyQueue().put(memberId); } catch (InterruptedException e) { e.printStackTrace(); } // 增加排队人携带的任务 Future<Map<String, Object>> map = Test.getExecutorService().submit(new Callable<Map<String, Object>>() { @Override public Map<String, Object> call() throws Exception { Map<String, Object> map = new HashMap<String, Object>(); OrderService orderService = new OrderService(); orderService.dealOrder(); return map; } }); } }
3、业务类
public class OrderService { /** * 按照会员下单的顺序处理订单 */ public synchronized void dealOrder() { String memberId = Test.getBuyQueue().poll(); System.out.println("开始处理订单,会员号: " + memberId); try { // 模拟业务处理时长 Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("---处理完成订单,会员号: " + memberId); if (Test.getBuyQueue().size() == 0) { Test.getExecutorService().shutdown(); } } }
4、测试类
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * @author luoqinglong * @date 2014-3-23 */ public class Test { private static ExecutorService executor = null; private static BuyQueue buyQueue = null; /** * @param args */ public static void main(String[] args) { for (int i = 0; i < 100; i++) { MemberAction action = new MemberAction(); action.saveOrder(i + 1 + ""); } } public static synchronized ExecutorService getExecutorService() { if (Test.executor == null) { Test.executor = Executors.newFixedThreadPool(3); } return Test.executor; } public static synchronized BuyQueue getBuyQueue() { if (Test.buyQueue == null) { Test.buyQueue = new BuyQueue(10); } return Test.buyQueue; } }
需完善的地方:
1、防止重复排队
2、针对不同的业务使用多个排队器
相关文章推荐
- linux常用命令总结
- Centos 6.4 python 2.6 升级到 2.7
- 如何通过Linux命令行使用和运行PHP脚本
- linux常用
- 在Windows上使用Linux命令工具:CygwinPortable
- Linux驱动学习-----Ubuntu12.04构建Linux源码树
- java 项目中恢复Linux MySQL数据库sh
- linux压缩与解压缩 tar命令
- Linux中常用操作命令
- 编译GCC-4.8出现的错误 —— Linux gnu/stubs-32.h: No such file or directory
- Linux下查看及修改进程打开的文件句柄数量
- linux硬链接 软链接
- Linux系统一些系统查看指令
- Linux里如何查找文件内容
- 使用 Yocto Project 构建自定义嵌入式 Linux 发行版
- linux 0号进程 1号进程 区别(转)
- linux上安装SVN
- 在Linux下写一个线程池以及线程池的一些用法和注意点
- Linux进程使用内存的基本流程---Linux用户进程是如何释放内存的
- 学习笔记:linuxc第七章—进程控制 下篇