zoukankan      html  css  js  c++  java
  • Memcached(六)Memcached的并发实例

    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
    

      

  • 相关阅读:
    windows7使用(2)软件安装及系统优化
    Lucene.net搜索——初识lucene
    只好代码不好色,嫁人当嫁IT男!
    数据库生成word说明文档
    搬家到cnblogs,请多关照
    轻量级的数据交换格式——初识Json(上)
    Flex之Hello world
    Flex之Hello world
    Flex之Hello world
    在 Visual C++ 中控制全局对象的初始化顺序,#pragma init_seg(compiler)
  • 原文地址:https://www.cnblogs.com/wuxinliulei/p/5217410.html
Copyright © 2011-2022 走看看