模拟线程安全的售票案例(java)
2024-10-15 21:49:38
package try51.thread.safe; import java.util.ArrayList;
import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock; public class LockDemo {
public static void main(String[] args) {
// 所有票源
ArrayList<Thread> lst = new ArrayList<>();
lst.add(new Thread(new Tickets2("网上 售票")));
lst.add(new Thread(new Tickets2("手机APP 售票")));
lst.add(new Thread(new Tickets2("实地窗口售票"))); // 随机产生一个客户端类型
Random rdom = new Random();
// 设置一个线程池
ExecutorService es = Executors.newFixedThreadPool(100);
// 模拟有 15个客户端 来购票
for (int i = 0; i < 15; i++) {
int index = rdom.nextInt(3);
Thread thread = lst.get(index);
// 购票线程进入线程池
es.submit(thread);
}
// 关闭线程池
es.shutdown();
}
} /**
*
* @author lztkdr
*
*/
class Tickets2 implements Runnable { // 安全锁对象
public static Lock locker = new ReentrantLock(); // 静态的票总数(固定)
public static int TicketCount = 10; public String name; /**
*
* @param name
* 客户端 票源
*/
public Tickets2(String name) {
this.name = name;
} @Override
public void run() {
// 线程锁 队列式 售票
locker.lock();
try {
// 模拟购票需要200毫秒
Thread.sleep(200);
if (TicketCount > 0) {
System.out.println(this.name + "\t出售1一张,剩余\t " + (--TicketCount));
} else {
System.out.println(this.name + "\t沒有抢到票!!!");
} } catch (InterruptedException e) {
e.printStackTrace();
} finally {
locker.unlock();
}
}
}
最新文章
- BZOJ 3809: Gty的二逼妹子序列
- 2Struts2基础----青软S2SH(笔记)
- 转 Visual C++ 将整合Clang
- October 13th 2016 Week 42nd Thursday
- java 字节流和字符流的区别 转载
- YTU 3006: 迷宫问题(栈与队列)
- linux下jdk安装 failed /usr/local/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
- acdream 1738 世风日下的哗啦啦族I 分块
- ModelAndView
- curl 命令详解(转)
- ubuntu 下面手动安装jdk
- AFNetworking2.0和AFNetworking3.0 的HTTPS的配置
- lua 数据类型
- Flutter中使用sqlite
- Pandas 基础(15) - date_range 和 asfreq
- ESB简介及选型(转) http://www.cnblogs.com/skyme/archive/2012/08/06/2623414.html
- spring中整合memcached,以及创建memcache的put和get方法
- webpack常用loader和plugin及打包速度优化
- C# 如何物理删除有主外键约束的记录?存储过程实现
- 分布式全文搜索引擎ElasticSearch