首页 > 其他 > 详细

代码层面控制同一用户短时间内重复下单的模拟代码

时间:2017-03-24 19:22:53      阅读:280      评论:0      收藏:0      [点我收藏+]

写在前面:

    大量用户同时下单时,如何控制同一用户重复下单?

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 线程休眠了...

  

代码层面控制同一用户短时间内重复下单的模拟代码

原文:http://www.cnblogs.com/fulh/p/6612769.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!