实例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. 安卓开发学习笔记(1)使用Bundle在Activity之间交换数据(实例:模拟淘宝的填写并显示收货地址的功能)

    运行结果: 代码截图: 不要忘记在manifest->AndroidManifest.XML中添加新的Activity,否则会闪退 MainActivity.java AddressActivi ...

  2. java计算机毕业设计h5仿淘宝购物系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计h5仿淘宝购物系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计h5仿淘宝购物系统源码+mysql数据库+系统+lw文档+部署 本源码技术栈: 项目架构:B ...

  3. 淘宝购物如何找优惠券_淘宝上买衣服怎么省钱

    先领券,再下单.省钱不止一点点! 你购物,我掏钱.天猫淘宝任你选! 荐好友,领佣金.你省我省大家省! 加VX:sqgwkk  一省到底! 宝妈在家也能做兼职_淘宝购物如何找优惠券_淘宝上买衣服怎么省钱 ...

  4. python淘宝_python实现淘宝购物系统

    本文实例为大家分享了python淘宝购物系统的具体代码,供大家参考,具体内容如下 代码如下: #刚创建账户所拥有的钱 money = 0 #定义商品列表 goods_list = [ {'name': ...

  5. java计算机毕业设计h5仿淘宝购物系统源码+数据库+系统+lw文档

    java计算机毕业设计h5仿淘宝购物系统源码+数据库+系统+lw文档 java计算机毕业设计h5仿淘宝购物系统源码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 ...

  6. jquery+原生js模拟淘宝输入框下拉提示

    1.概述: 模拟淘宝.百度的搜索框,当用户输入时,会自动下拉提示关键字,使用组件jquery.js(1.12.1),jquery-ui.js(1.12.1).jquery-ui.css(1.12.1) ...

  7. 利用python从网页查找数据_利用Python模拟淘宝的搜索过程并对数据进行可视化分析...

    数据挖掘入门与实战 公众号: datadw 本文讲述如何利用Python模拟淘宝的搜索过程并对搜索结果进行初步的数据可视化分析. 搜索过程的模拟:淘宝的搜索页面有两种形式, 一种形式是, 2019/2 ...

  8. HTML+CSS零基础学习笔记(五)— 模拟淘宝首页(静态)

    内容概览 模拟淘宝首页(静态) 一.项目重难点 二.效果图及源码 模拟淘宝首页(静态) 一.项目重难点 样式重置:在实际开发过程中,我们往往会新建一个单独的CSS文件(reset.css),用于对应H ...

  9. 淘宝购物折扣秒杀分享群淘宝红包怎么抢

    天猫秒杀优惠群,淘宝红包秒杀群![特价秒杀群号(286578730),中毒太深嘞 自从加了这个QQ群,就停不下来了!不过还好价格都不贵..] 很多朋友会有很大的疑问,QQ上的特价秒杀优惠券群是否可信? ...

  10. 【python】模拟淘宝的客服自动回复系统-socket,json,time模块的应用

    最近在研究soctet模块的过程中,尝试做个小的练习,第一反应是做个类似qq或者微信的即时聊天,这个需求相对比较简单,采用UDP协议很快就可以实现,为了提高点难度,于是决定尝试模拟淘宝的自动回复功能, ...

最新文章

  1. Dropout也能自动化了,谷歌大神Quoc Le等人利用强化学习自动找寻模型专用Dropout...
  2. 皮一皮:你的工资去哪了?实锤了!
  3. nginx+tomcat集群负载均衡中的多虚拟主机配置
  4. 拷贝了虚拟机后linux下如何配置静态ip,并连接外网
  5. jquery ajax 防止浏览器缓存
  6. ajax请求成功和失败方法_创新需要反馈和失败的新方法
  7. 对象的当前状态使该操作无效
  8. C语言 表白代码(I love you!)
  9. 小型软件企业组织结构
  10. linux build文件,从源代码到可执行文件——编译全过程解析
  11. Quick Viewer 快速浏览器
  12. 创业团队产品如何战胜大公司的抄袭 腾讯抄你肿么办?
  13. Unity (游戏引擎)
  14. 基于北方苍鹰优化算法的函数寻优算法
  15. html调用wrl,如何实现在网页里嵌入wrl文件
  16. 清华大学丁霄汉:深度网络重参数化——让你的模型更快更强
  17. Insights直播回顾——手语服务,助力沟通无障碍
  18. 运营商数据分析api
  19. Go语言核心36讲笔记——程序实体那些事
  20. c语言百题大战之求n的阶乘,网易大神第五人格百题大战题库下载-第五人格百题大战答案完整版下载v1.52.7_86PS软件园...

热门文章

  1. Linux上查到目前透过FTP进来的使用者
  2. 5月8号--华为正式推出新企业标识
  3. 惊呆了!JDK1.8竟然打破了我对接口的一切认知...
  4. 如何提升Java应用程序性能
  5. 特殊时期,找工作的 9 点建议!
  6. Android 秒级编译 Freeline
  7. 产品经理改需求这件事
  8. Python中的字典数据结构
  9. H5 新特性之 fileReader 实现本地图片视频资源的预览
  10. 浙江大学的”程序设计入门-C语言课程“截图