实例225 模拟淘宝购物买卖双方交易问题
实例225 模拟淘宝购物买卖双方交易问题
import java.util.Random;public class OnlineStore {public static void main(String[] args){Alipay alipay = new Alipay(2); //创建2个支付宝//创建实例并启动线程new Seller("卖家-衣拉客",alipay,5).start();new Seller("卖家-衣院", alipay, 7).start(); new Buyer("买家-小A",alipay,101).start();new Buyer("买家-小B",alipay,102).start();}
}class Alipay{ // 支付宝 用于网上买卖交易private final String[] goods; //标识卖家商品,数组的长度是多少则表示商品的数量是多少private int n; //标识存入支付宝交易数量private int m; //标识支出支付宝交易数量private int count;public Alipay(int count){ // 构造方法进行初始化this.goods = new String[count]; //创建字符串数组this.m = 0; this.n = 0;this.count = 0; }public synchronized void storage(String alipay){ // 往支付宝里存款System.out.println("淘宝用户ID=" + Thread.currentThread().getName()+ "\t支付宝存入" + alipay);try{while(count >= goods.length){wait(); // 线程等待}goods[n] = alipay; // 放置支付宝账号于数组n = (n + 1) % goods.length;count++;notifyAll();}catch(Exception e){ // 捕获异常System.out.println("支付宝存入功能出现错误:" + e.getMessage());}}public synchronized String outlay(){ // 往支付宝里支出String alipay = null;try{while(count <= 0){wait(); // 线程等待}alipay = goods[m];m = (m + 1) % goods.length; //支出支付宝交易数量count--; // 数组个数减一}catch(Exception e){}System.out.println("淘宝用户ID=" + Thread.currentThread().getName()+ "\t支付宝支出" + alipay);return alipay;
}}class Buyer extends Thread{ // 买家线程类private final Random random;private final Alipay alipay;private static int id = 0; 交易的流水号public Buyer(String name, Alipay alipay,long seed){ // 构造方法进行初始化super(name);this.alipay = alipay;this.random = new Random(seed);}public void run(){try{while(true){Thread.sleep(random.nextInt(1000)); //随机休眠String flowerID = "交易流水账号" + nextId();alipay.storage(flowerID); //存入支付宝中 }}catch(Exception e){ //捕获异常 } }private static synchronized int nextId(){return id++;}
}class Seller extends Thread{ // 卖家线程类private final Random random;private final Alipay alipay; //卖家支付宝?public Seller(String name, Alipay alipay, long seed){super(name);this.alipay = alipay;this.random = new Random(seed); // 创建随机对象}public void run() { // 实现Thread类的方法,启动线程try {while (true) {String alipay = this.alipay.outlay();Thread.sleep(random.nextInt(1000));}} catch (Exception e) { // 捕获异常System.out.println("买家支付预付款出错:" + e.getMessage());}}
}
输出:
淘宝用户ID=卖家-衣拉客 支付宝支出交易流水账号8
淘宝用户ID=卖家-衣院 支付宝支出交易流水账号9
淘宝用户ID=买家-小B 支付宝存入交易流水账号11
淘宝用户ID=卖家-衣拉客 支付宝支出交易流水账号11
淘宝用户ID=卖家-衣院 支付宝支出交易流水账号10
淘宝用户ID=买家-小B 支付宝存入交易流水账号12
淘宝用户ID=卖家-衣院 支付宝支出交易流水账号12
淘宝用户ID=买家-小B 支付宝存入交易流水账号13
淘宝用户ID=卖家-衣院 支付宝支出交易流水账号13
淘宝用户ID=买家-小A 支付宝存入交易流水账号14
淘宝用户ID=卖家-衣拉客 支付宝支出交易流水账号14
淘宝用户ID=买家-小A 支付宝存入交易流水账号15
淘宝用户ID=买家-小B 支付宝存入交易流水账号16
淘宝用户ID=卖家-衣拉客 支付宝支出交易流水账号15
淘宝用户ID=卖家-衣院 支付宝支出交易流水账号16
淘宝用户ID=买家-小A 支付宝存入交易流水账号17
淘宝用户ID=卖家-衣院 支付宝支出交易流水账号17
淘宝用户ID=买家-小B 支付宝存入交易流水账号18
淘宝用户ID=卖家-衣拉客 支付宝支出交易流水账号18
淘宝用户ID=买家-小A 支付宝存入交易流水账号19
淘宝用户ID=买家-小A 支付宝存入交易流水账号20
淘宝用户ID=卖家-衣拉客 支付宝支出交易流水账号19
淘宝用户ID=卖家-衣院 支付宝支出交易流水账号20
淘宝用户ID=买家-小A 支付宝存入交易流水账号21
淘宝用户ID=买家-小A 支付宝存入交易流水账号22
淘宝用户ID=买家-小B 支付宝存入交易流水账号23
淘宝用户ID=买家-小A 支付宝存入交易流水账号24
淘宝用户ID=卖家-衣拉客 支付宝支出交易流水账号21
淘宝用户ID=卖家-衣院 支付宝支出交易流水账号22
转载于:https://www.cnblogs.com/firecode/archive/2012/04/28/2474617.html
实例225 模拟淘宝购物买卖双方交易问题相关推荐
- 安卓开发学习笔记(1)使用Bundle在Activity之间交换数据(实例:模拟淘宝的填写并显示收货地址的功能)
运行结果: 代码截图: 不要忘记在manifest->AndroidManifest.XML中添加新的Activity,否则会闪退 MainActivity.java AddressActivi ...
- java计算机毕业设计h5仿淘宝购物系统源码+mysql数据库+系统+lw文档+部署
java计算机毕业设计h5仿淘宝购物系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计h5仿淘宝购物系统源码+mysql数据库+系统+lw文档+部署 本源码技术栈: 项目架构:B ...
- 淘宝购物如何找优惠券_淘宝上买衣服怎么省钱
先领券,再下单.省钱不止一点点! 你购物,我掏钱.天猫淘宝任你选! 荐好友,领佣金.你省我省大家省! 加VX:sqgwkk 一省到底! 宝妈在家也能做兼职_淘宝购物如何找优惠券_淘宝上买衣服怎么省钱 ...
- python淘宝_python实现淘宝购物系统
本文实例为大家分享了python淘宝购物系统的具体代码,供大家参考,具体内容如下 代码如下: #刚创建账户所拥有的钱 money = 0 #定义商品列表 goods_list = [ {'name': ...
- java计算机毕业设计h5仿淘宝购物系统源码+数据库+系统+lw文档
java计算机毕业设计h5仿淘宝购物系统源码+数据库+系统+lw文档 java计算机毕业设计h5仿淘宝购物系统源码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 ...
- jquery+原生js模拟淘宝输入框下拉提示
1.概述: 模拟淘宝.百度的搜索框,当用户输入时,会自动下拉提示关键字,使用组件jquery.js(1.12.1),jquery-ui.js(1.12.1).jquery-ui.css(1.12.1) ...
- 利用python从网页查找数据_利用Python模拟淘宝的搜索过程并对数据进行可视化分析...
数据挖掘入门与实战 公众号: datadw 本文讲述如何利用Python模拟淘宝的搜索过程并对搜索结果进行初步的数据可视化分析. 搜索过程的模拟:淘宝的搜索页面有两种形式, 一种形式是, 2019/2 ...
- HTML+CSS零基础学习笔记(五)— 模拟淘宝首页(静态)
内容概览 模拟淘宝首页(静态) 一.项目重难点 二.效果图及源码 模拟淘宝首页(静态) 一.项目重难点 样式重置:在实际开发过程中,我们往往会新建一个单独的CSS文件(reset.css),用于对应H ...
- 淘宝购物折扣秒杀分享群淘宝红包怎么抢
天猫秒杀优惠群,淘宝红包秒杀群![特价秒杀群号(286578730),中毒太深嘞 自从加了这个QQ群,就停不下来了!不过还好价格都不贵..] 很多朋友会有很大的疑问,QQ上的特价秒杀优惠券群是否可信? ...
- 【python】模拟淘宝的客服自动回复系统-socket,json,time模块的应用
最近在研究soctet模块的过程中,尝试做个小的练习,第一反应是做个类似qq或者微信的即时聊天,这个需求相对比较简单,采用UDP协议很快就可以实现,为了提高点难度,于是决定尝试模拟淘宝的自动回复功能, ...
最新文章
- Dropout也能自动化了,谷歌大神Quoc Le等人利用强化学习自动找寻模型专用Dropout...
- 皮一皮:你的工资去哪了?实锤了!
- nginx+tomcat集群负载均衡中的多虚拟主机配置
- 拷贝了虚拟机后linux下如何配置静态ip,并连接外网
- jquery ajax 防止浏览器缓存
- ajax请求成功和失败方法_创新需要反馈和失败的新方法
- 对象的当前状态使该操作无效
- C语言 表白代码(I love you!)
- 小型软件企业组织结构
- linux build文件,从源代码到可执行文件——编译全过程解析
- Quick Viewer 快速浏览器
- 创业团队产品如何战胜大公司的抄袭 腾讯抄你肿么办?
- Unity (游戏引擎)
- 基于北方苍鹰优化算法的函数寻优算法
- html调用wrl,如何实现在网页里嵌入wrl文件
- 清华大学丁霄汉:深度网络重参数化——让你的模型更快更强
- Insights直播回顾——手语服务,助力沟通无障碍
- 运营商数据分析api
- Go语言核心36讲笔记——程序实体那些事
- c语言百题大战之求n的阶乘,网易大神第五人格百题大战题库下载-第五人格百题大战答案完整版下载v1.52.7_86PS软件园...