首页 > 代码库 > 代码层面控制同一用户短时间内重复下单的模拟代码
代码层面控制同一用户短时间内重复下单的模拟代码
写在前面:
大量用户同时下单时,如何控制同一用户重复下单?
package com.fulh.thread; public class LockId { public static void main(String[] args) { //模拟不同操作员同时操作的场景 /*for(int i=0;i<100;i++){ new Thread(new Person(String.valueOf(i)),String.valueOf(i)).start();; }*/ //模拟统一操作员短时间内多次操作的场景 for(int i=0;i<100;i++){ new Thread(new Person("1"),String.valueOf(i)).start(); } } } /** * @ClassName: LockId.java * @Description: 模拟操作员信息 * * @version: v1.0.0 * @author: fulh * @date: 2017年3月24日 下午5:47:08 * * Modification History: * Date Author Version Description *------------------------------------------------------------ * 2017年3月24日 fulh v1.1.0 修改原因 */ class Person implements Runnable { private String id; public Person(){} public Person(String id){ this.id = id; } public String getId() { return id; } public void setId(String id) { this.id = id; } @Override public void run() { //对操作员id加锁(当然也可以对其他操作员唯一标识进行加锁) synchronized (id) { try { System.out.println(Thread.currentThread().getName() + " 线程休眠了..."); Thread.sleep(2000); System.out.println(Thread.currentThread().getName() + " 线程走完了...,当前时间:" + System.currentTimeMillis()); } catch (InterruptedException e) { e.printStackTrace(); } } } }
结果如下:①模拟同一操作员多次操作的情景:线程会出现等待
0 线程休眠了... 0 线程走完了...,当前时间:1490349092102 99 线程休眠了... 99 线程走完了...,当前时间:1490349094103 97 线程休眠了... 97 线程走完了...,当前时间:1490349096104 98 线程休眠了... 98 线程走完了...,当前时间:1490349098104 96 线程休眠了... 96 线程走完了...,当前时间:1490349100105 95 线程休眠了... 95 线程走完了...,当前时间:1490349102105 94 线程休眠了... 94 线程走完了...,当前时间:1490349104107 93 线程休眠了... 93 线程走完了...,当前时间:1490349106107 92 线程休眠了... 92 线程走完了...,当前时间:1490349108107 91 线程休眠了...
②模拟不同操作员同时操作的情景:线程不会等待
0 线程休眠了... 4 线程休眠了... 2 线程休眠了... 9 线程休眠了... 3 线程休眠了... 6 线程休眠了... 5 线程休眠了... 1 线程休眠了... 10 线程休眠了... 12 线程休眠了... 11 线程休眠了... 8 线程休眠了... 14 线程休眠了... 7 线程休眠了...
代码层面控制同一用户短时间内重复下单的模拟代码
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。