网页浏览量统计(队列实现)

19 篇文章 0 订阅
6 篇文章 0 订阅

这是一个demo,传达的只是思想,实际情况请兄弟们自己研究。

用一个线程安全的队列ConcurrentLinkedQueue 来保存请求个数,定时任务五秒执行一次,设置sum(sum = 数据库值+Queue.size()),然后会清除ConcurrentLinkedQueue 的内容,五秒一循环。队列可以保存任何信息,按需求而定

 

@Component
public class QueueDemo {
    private ConcurrentLinkedQueue concurrentLinkedQueue = new ConcurrentLinkedQueue();

    public ConcurrentLinkedQueue getConcurrentLinkedQueue() {
        return concurrentLinkedQueue;
    }

    public void setConcurrentLinkedQueue(ConcurrentLinkedQueue concurrentLinkedQueue) {
        this.concurrentLinkedQueue = concurrentLinkedQueue;
    }
}

 

包括定时任务 Schedled 

@Service
public class TestService {

    static volatile int i = 0;

    @Resource
    StudentMapper studentMapper;

    @Autowired
    QueueDemo queue;
    public void test1() throws InterruptedException {
        queue.getConcurrentLinkedQueue().add(System.currentTimeMillis());
        System.out.println("queue添加成功");
        new Thread(()->{
            try {
                TimeUnit.SECONDS.sleep(5);
                System.out.println("睡眠"+System.currentTimeMillis()+"  "+i);

            } catch (InterruptedException e) {
            }
        }).start();
    }
    @Scheduled(cron = "*/5 * * * * *")
    public void updateSum(){

        //把它当成在数据库读取网页信息的方法
        Student studen = studentMapper.select("num");
        System.out.println(studen);
        studen.setSum(
                queue.getConcurrentLinkedQueue().size()+studen.getSum());
        studentMapper.update(studen);
        queue.getConcurrentLinkedQueue().clear();
    }
}

 

使用Jmeter测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值