java 简单秒杀
以下代码 不考虑多服务器
限制线程池的大小 和队列的限制来实现
package org.zhang; import java.util.concurrent.BlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit; /**
* 单服务器用线程池实现秒杀的思路一
*
* @author zhanghaijun
*
*/
public class ExecutorsTest { public static boolean flag = true; // 秒杀物品的标记 public static void main(String[] args) {
ThreadPoolExecutor pool = new ThreadPoolExecutor(1, 1, 0L,
TimeUnit.MILLISECONDS, new SynchronousQueue<Runnable>());
ThreadTest t1 = new ThreadTest("张三");
ThreadTest t2 = new ThreadTest("李四");
ThreadTest t3 = new ThreadTest("王五");
try {
pool.execute(t1);
} catch (Exception e) {
System.out.println(t1.getUserName() + "没有抢到");
} try {
pool.execute(t3);
} catch (Exception e) {
System.out.println(t3.getUserName() + "没有抢到");
} try {
pool.execute(t2);
} catch (Exception e) {
System.out.println(t2.getUserName() + "没有抢到");
}
pool.shutdown();
} } class ThreadTest extends Thread { private String userName; public ThreadTest(String userName) {
super();
this.userName = userName;
} @Override
public void run() {
try {
Thread.sleep(200);
if (ExecutorsTest.flag) {
System.out.println(this.userName + "秒杀成功");
ExecutorsTest.flag = false;
} } catch (InterruptedException e) {
e.printStackTrace();
}
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} }
java 简单秒杀的更多相关文章
- java简单词法分析器(源码下载)
java简单词法分析器 : http://files.cnblogs.com/files/hujunzheng/%E7%AE%80%E5%8D%95%E8%AF%8D%E6%B3%95%E5%88%8 ...
- !!转!!java 简单工厂模式
举两个例子以快速明白Java中的简单工厂模式: 女娲抟土造人话说:“天地开辟,未有人民,女娲抟土为人.”女娲需要用土造出一个个的人,但在女娲造出人之前,人的概念只存在于女娲的思想里面.女娲造人,这就是 ...
- JAVA简单Swing图形界面应用演示样例
JAVA简单Swing图形界面应用演示样例 package org.rui.hello; import javax.swing.JFrame; /** * 简单的swing窗体 * @author l ...
- 多元线性回归----Java简单实现
http://www.cnblogs.com/wzm-xu/p/4062266.html 多元线性回归----Java简单实现 学习Andrew N.g的机器学习课程之后的简单实现. 课程地址:h ...
- java简单数据类型转化
java简单数据类型,有低级到高级为:(byte,short,char)→int→long→float→double (boolean不参与运算转化) 转化可以分为 低级到高级的自动转化 高级到低级的 ...
- 预防和避免死锁的方法及银行家算法的java简单实现
预防死锁 (1) 摒弃"请求和保持"条件 基本思想:规定所有进程在开始运行之前,要么获得所需的所有资源,要么一个都不分配给它,直到所需资源全部满足才一次性分配给它. 优点:简单.易 ...
- Java简单聊天室
实现Java简单的聊天室 所用主要知识:多线程+网络编程 效果如下图 /** * * @author Administrator * * 简单的多人聊天系统——重点:同时性,异步性 * 1.客户端:发 ...
- Java简单工厂模式
Java简单工厂模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式.简 ...
- java简单web爬虫(网页图片)
java简单web爬虫(网页图片)效果,执行main()方法后图片就下载道C盘的res文件夹中.没有的话创建一个文件夹代码里的常量根据自己的需求修改,代码附到下面. package com.sinit ...
随机推荐
- eShopOnContainers 是一个基于微服务的.NET Core示例框架
找到一个好的示例框架很难,但不是不可能.大多数是小型Todo风格的应用程序,通常基于SimpleCRUD.值得庆幸的是,Microsoft已经为eShopOnContainers创建了一个基于微服务的 ...
- svn基本命令
*验证svn安装是否成功 #svnadmin --version *创建svn的数据仓库 #svnadmin create /data/svn/svndata/spms *启动svn服务 #svnse ...
- 转 sqlplus 设置回闪 sqlplus下使用退格backspace回删出现^H的解决办法
转自 http://blog.csdn.net/chinadm123/article/details/44099351 1.进入sqlplus前设置回删 在进入sqlplus之前,在当前termina ...
- python+selenium 页面中存在选项卡时,获取页面内容的小技巧
最近用selenium读取页面内容时,遇到包含选项卡的页面,由于选项卡多由js加载其中的内容,所以在网址打开时只能获取到默认显示的选项卡中的内容,而tab2.tab3等等都需要傻傻的点击一下才会获取到 ...
- ecshop的商品列表输出中多出一条空记录
这个是ECSHOP的一个BUG, 在模板中显示商品列表的位置,加一句{if $goods}判断商品存在才显示: {foreach from=$goods_list item=goods} {if $g ...
- 系统讲解一下,Dao,Entity,Servlet,Action各自有什么东西-Java/Web开发
dao 主要是一些接口,里面定义了一些用于增删改查的方法名 daoImpl 就是对dao的具体实现 Service 同上,也是一些接口,主要是用来调用dao层的一些方法,所以这里定义的方法一般都定义好 ...
- Android studio 断点调试
最近进行业务测试,总是被测试环境不稳定或者测试数据错误困扰,一有问题就去找开发,自己都觉得很烦,所以就自己学着调试起来,这样以后遇到问题就可以自己定位的更深入了. 1.确保连接设备且进 ...
- 我的NopCommerce之旅(7): 依赖注入(IOC/DI)
一.基础介绍 依赖注入,Dependency Injection,权威解释及说明请自己查阅资料. 这里简单说一下常见使用:在mvc的controller的构造方法中定义参数,如ICountryServ ...
- Java GUI setSize()、setPreferredSize()的区别
setSize().setPreferredSize()都可以设置组件的大小,但二者的使用有所不同. 1.setSize()的使用方式 setSize(int width,int height) se ...
- Android 6.0动态权限(转)
转自:http://blog.csdn.net/uana_777/article/details/54136255 Part One 权限区分 Android 6.0 为了保护用户隐私,将一些权限的申 ...