小编Dou*_*ugA的帖子

使用并发,线程,静态变量实现GAE/Java计数器

我已经阅读了很多关于计数器的GAE文章和GAE中令人讨厌的写入限制.我已经看到了带有分片,cron任务,内存缓存等的解决方案.然后我学到了足够的java线程能够提出问题:

问:我们可以使用并发/ servlet静态varibales在servlet线程中实现计数器吗?

这将带来额外的好处,即减少对数据存储区和内存缓存的写入(花费相同的$),并删除cron要求,因为一系列快速计数器命中中的最后一个servlet将更新数据存储区.

我不太了解并发编程以提出解决方案,但我想象一下静态servlet变量,可能是"atomic-integers"和last-update标志,以便检查这个servlet是否是最后一个更新servlet的servlet static var,在最后200ms内,从而触发对数据存储区的保存.

// Servlet gets a hit
// static var counter++
// Checks last datastore save time of the static var, if longer than 200ms
// save to datastore & save "last update time"
// If shorter than 200 ms ago, let the next servlet call update the datastore
Run Code Online (Sandbox Code Playgroud)

可以这样做吗?有什么建议?Mucho赞赏你的想法.

java concurrency google-app-engine multithreading thread-safety

3
推荐指数
1
解决办法
484
查看次数