package com.sinosuperman.memcached;

import java.io.IOException;
import java.net.InetSocketAddress; import net.spy.memcached.CASResponse;
import net.spy.memcached.CASValue;
import net.spy.memcached.MemcachedClient; public class TestCASMultiThread { private static MemcachedClient client = null; static {
try {
client = new MemcachedClient(new InetSocketAddress("localhost",
11211));
} catch (IOException o) {
}
} private class ThreadTest extends Thread { private MemcachedClient client = null; ThreadTest(String name) throws IOException {
super(name);
client = new MemcachedClient(new InetSocketAddress("localhost",
11211));
} public void run() {
int i = 0;
int success = 0;
while (i < 10) {
i++;
CASValue<Object> uniqueValue = client.gets("numberss");
CASResponse response = client.cas("numberss",
uniqueValue.getCas(),
(Integer) uniqueValue.getValue() + 1); if (response.toString().equals("OK")) {
success++;
} if (i == 10)
System.out.println(Thread.currentThread().getName() + " "
+ i + " time " + " update oldValue : "
+ uniqueValue.getValue() + " , result : "
+ response);
} if (success < 10) {
Count.incr(10 - success);
System.out.println("Test counter: " + Count.get());
}
}
} public static void main(String[] args) throws Exception { client.set("numberss", 1800, 1); TestCASMultiThread testObj = new TestCASMultiThread();
for (int i = 0; i < 10; i++) {
testObj.new ThreadTest("Thread-" + (i + 1)).start();
}
} public static class Count {
private static int counter = 0; public synchronized static void incr(int x) {
counter += x;
} public static int get() {
return counter;
}
}
}

  

2016-02-25 16:12:12.495 INFO net.spy.memcached.MemcachedConnection:  Added {QA sa=localhost/127.0.0.1:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2016-02-25 16:12:12.498 INFO net.spy.memcached.MemcachedConnection: Connection state changed for sun.nio.ch.SelectionKeyImpl@fa9cf
2016-02-25 16:12:12.503 INFO net.spy.memcached.MemcachedConnection: Added {QA sa=localhost/127.0.0.1:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2016-02-25 16:12:12.504 INFO net.spy.memcached.MemcachedConnection: Connection state changed for sun.nio.ch.SelectionKeyImpl@b179c3
2016-02-25 16:12:12.505 INFO net.spy.memcached.MemcachedConnection: Added {QA sa=localhost/127.0.0.1:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2016-02-25 16:12:12.507 INFO net.spy.memcached.MemcachedConnection: Connection state changed for sun.nio.ch.SelectionKeyImpl@aa9835
2016-02-25 16:12:12.508 INFO net.spy.memcached.MemcachedConnection: Added {QA sa=localhost/127.0.0.1:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2016-02-25 16:12:12.509 INFO net.spy.memcached.MemcachedConnection: Connection state changed for sun.nio.ch.SelectionKeyImpl@7b7072
2016-02-25 16:12:12.511 INFO net.spy.memcached.MemcachedConnection: Added {QA sa=localhost/127.0.0.1:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2016-02-25 16:12:12.513 INFO net.spy.memcached.MemcachedConnection: Connection state changed for sun.nio.ch.SelectionKeyImpl@bfbdb0
2016-02-25 16:12:12.514 INFO net.spy.memcached.MemcachedConnection: Added {QA sa=localhost/127.0.0.1:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2016-02-25 16:12:12.515 INFO net.spy.memcached.MemcachedConnection: Connection state changed for sun.nio.ch.SelectionKeyImpl@9fef6f
2016-02-25 16:12:12.516 INFO net.spy.memcached.MemcachedConnection: Added {QA sa=localhost/127.0.0.1:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
Thread-1 10 time update oldValue : 12 , result : OK
Test counter: 5
Thread-3 10 time update oldValue : 15 , result : EXISTS
Test counter: 15
2016-02-25 16:12:12.518 INFO net.spy.memcached.MemcachedConnection: Connection state changed for sun.nio.ch.SelectionKeyImpl@f38798
2016-02-25 16:12:12.520 INFO net.spy.memcached.MemcachedConnection: Added {QA sa=localhost/127.0.0.1:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2016-02-25 16:12:12.525 INFO net.spy.memcached.MemcachedConnection: Connection state changed for sun.nio.ch.SelectionKeyImpl@7a78d3
2016-02-25 16:12:12.525 INFO net.spy.memcached.MemcachedConnection: Added {QA sa=localhost/127.0.0.1:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
Thread-5 10 time update oldValue : 17 , result : EXISTS
Test counter: 21
2016-02-25 16:12:12.525 INFO net.spy.memcached.MemcachedConnection: Connection state changed for sun.nio.ch.SelectionKeyImpl@1a5ab41
2016-02-25 16:12:12.525 INFO net.spy.memcached.MemcachedConnection: Added {QA sa=localhost/127.0.0.1:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2016-02-25 16:12:12.525 INFO net.spy.memcached.MemcachedConnection: Connection state changed for sun.nio.ch.SelectionKeyImpl@181afa3
2016-02-25 16:12:12.525 INFO net.spy.memcached.MemcachedConnection: Added {QA sa=localhost/127.0.0.1:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2016-02-25 16:12:12.541 INFO net.spy.memcached.MemcachedConnection: Connection state changed for sun.nio.ch.SelectionKeyImpl@8ed465
Thread-7 10 time update oldValue : 26 , result : EXISTS
Test counter: 24
Thread-9 10 time update oldValue : 30 , result : OK
Test counter: 27
Thread-2 10 time update oldValue : 32 , result : OK
Test counter: 32
Thread-6 10 time update oldValue : 33 , result : OK
Test counter: 40
Thread-4 10 time update oldValue : 33 , result : EXISTS
Test counter: 48
Thread-8 10 time update oldValue : 38 , result : OK
Test counter: 52
Thread-10 10 time update oldValue : 40 , result : OK
Test counter: 60

  

Memcached(六)Memcached的并发实例的更多相关文章

  1. geotrellis使用(六)Scala并发(并行)编程

    本文主要讲解Scala的并发(并行)编程,那么为什么题目概称geotrellis使用(六)呢,主要因为本系列讲解如何使用Geotrellis,具体前几篇博文已经介绍过了.我觉得干任何一件事情基础很重要 ...

  2. memcached—向memcached中保存Java实体需注意的问题

    今天以代码实例的形式总结一下向memcached中保存Java实体需注意的问题: memcached工具类代码: package com.ghj.packageoftool; import java. ...

  3. memcached -- 运行memcached

    Memcached 运行 Memcached命令的运行: $ /usr/local/memcached/bin/memcached -h 注意:如果使用自动安装, memcached 命令位于 /us ...

  4. 后端——框架——缓存框架——memcached——《Memcached教程》阅读笔记

    Memcached的知识点大致可以分为三个部分. 服务器部分:环境搭建. 概念:存储的数据类型,指令,内存的替换策略. 集成:与Java语言的集成. 1.搭建环境 1.1 Linux环境 在Linux ...

  5. vue第六单元(vue的实例和组件-vue实例的相关属性和方法-解释vue的原理-创建vue的组件)

    第六单元(vue的实例和组件-vue实例的相关属性和方法-解释vue的原理-创建vue的组件) #课程目标 掌握vue实例的相关属性和方法的含义和使用 了解vue的数据响应原理 熟悉创建组件,了解全局 ...

  6. Memcached(七)Memcached的并发实例

    1. Memcached是什么?Memcached是分布式的内存对象缓存系统.  2. Memcached的基本数据结构是什么?Memcached是基于Key/Value对的HashMap.每一对,都 ...

  7. Memcached(五)Memcached的并发实例

    package com.sinosuperman.memcached; import java.io.IOException; import java.net.InetSocketAddress; i ...

  8. memcached在windows下多实例并存

    文章来源:http://blog.csdn.net/xingxing513234072/article/details/39343999 memcached.exe的-d install命令安装时其他 ...

  9. (转)实战Memcached缓存系统(6)Memcached CAS的多线程程序实例

    1. 源程序 package com.sinosuperman.memcached; import java.io.IOException; import java.net.InetSocketAdd ...

随机推荐

  1. WebDriver: Getting it to play nicely with Xvfb

    http://www.markhneedham.com/blog/2011/12/15/webdriver-getting-it-to-play-nicely-with-xvfb/ Thoughts ...

  2. mig_ddr4_ultrascale

    http://china.xilinx.com/support/documentation-navigation/design-hubs/dh0061-ultrascale-memory-interf ...

  3. job interview

    一 , 7series clock 二, SDRAM comtroller (DDR) 4.熟悉DDR2/3协议或Ethernet相关协议,并有实际项目经验者优先: 三,AXI bus(AMBA) 四 ...

  4. $.parseJSON 将json 对象转换为array

    项目中,通过json2.js的JSON.parse(jsonstr)的时候,整个返回值是object $.parseJSON(jsonstr)返回的也是object 而我想要的是array(objec ...

  5. Centos 6.4 安装elasticsearch+kibana

    elasticsearch和kibanna的链接地址:https://www.elastic.co/downloads,我的环境里用的包为kibana-4.1.1-linux-x64.tar.gz和e ...

  6. PHP之文件目录基础操作

    我们知道,临时声明的变量是保存在内存中的,即便是静态变量,在脚本运行完毕后也会被释放掉,so,想长久保存一个变量的内容,方法之一就是写到文件中,放到硬盘或服务器上,为此文件操作就必须很熟悉. 1.文件 ...

  7. mvn常见命令

    http://www.cnblogs.com/adolfmc/archive/2012/07/31/2616908.html 创建一个简单的Java工程:mvn archetype:create -D ...

  8. 本地缓存下载文件,download的二次封装

    来源:http://ask.dcloud.net.cn/article/524 源码下载链接 说明: (1)由于平时项目中大量用到了附件下载等功能,所以就花了一个时间,把plus的downlaod进行 ...

  9. 【转】代码高处走 从VC6到VC9移植代码问题说明

    首先可以直接用Visual Studio 2008的打开VC6的工作区文件和项目文件(dsw和dsp),并将其升级为VS2008的解决方案格式和项目格式(sln和vcproj),VC9的编译器相对于V ...

  10. Centos7最小化安装后(minimal)安装图形界面

    centos7下载地址:http://mirrors.cqu.edu.cn/CentOS/7/isos/x86_64/CentOS-7-x86_64-Minimal-1511.iso 下载后用vmwa ...