现在的位置: 首页 > 综合 > 正文

非s锁数据聊天室非锁高并发

2017年12月06日 ⁄ 综合 ⁄ 共 3273字 ⁄ 字号 评论关闭

public static void main(String [] args) {
  Threadmin th = new Threadmin();
  new Thread(th, "1号窗口").start(); 
  new Thread(th, "2号窗口").start();
  new Thread(th, "3号窗口").start();
  new Thread(th, "4号窗口").start();
  new Thread(th, "5号窗口").start();
  new Thread(th, "6号窗口").start();
  new Thread(th, "7号窗口").start();
  new Thread(th, "8号窗口").start();
  new Thread(th, "8号窗口").start();
  new Thread(th, "9号窗口").start();
  new Thread(th, "10号窗口").start();
  Threadmin2 a = new Threadmin2();
  new Thread(a, "7号窗口").start();
  
 }

 

 

public class Threadmin2 implements Runnable{
 //TreeMap tee = new TreeMap();
 public void run() {
  //System.out.println("容器:"+tree.size());
     while(true){
      try {
    Thread.sleep(10000);
   } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   System.out.println("容器:"+ChatContainer.getInstance().getAll().size());
   //System.out.println("标记:"+ChatContainer.getInstance().getint());
//      Iterator iter = ChatContainer.getInstance().getAll().entrySet().iterator();
//      while (iter.hasNext()) {
//      Map.Entry entry = (Map.Entry) iter.next();
//      Object key = entry.getKey();
//      Object val = entry.getValue();
//      Char r = (Char)val;
//      tee.put(r.getDatatime(), r);
//      //System.out.println(key+":"+r.getMessage()+":"+r.getDatatime());
//      }
   Iterator iter = ChatContainer.getInstance().getAll().entrySet().iterator();
      while (iter.hasNext()) {
       Map.Entry entry = (Map.Entry) iter.next();
       Object key = entry.getKey();
       Object val = entry.getValue();
       Char  r = (Char)val;
       //tee.put(r.getDatatime(), r);
       System.out.println(key+":"+r.getMessage());
      }
      }
      
     }
    
    
}

 

public class Threadmin implements Runnable{
    int i =0;
 public void run() {
     while(i<500){
      try {
    Thread.sleep(300);
   } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   int b = i++;
   Char r = new Char();
   r.setFlag(b);
   r.setMessage("世界"+b);
   ChatContainer.getInstance().addMessage(r);
   System.out.println(Thread.currentThread().getName()+"#当前赋值#:"+b);
  }
    
 }

 

public class ChatContainer {
 static int capacity = 50;
 final private static AtomicInteger counter1 = new AtomicInteger(0);
 final private static ConcurrentHashMap<Integer, Char> map = new ConcurrentHashMap<Integer, Char>(capacity);
 final private static TreeMap<Long, Char> tree = new TreeMap<Long, Char>();
 private static ChatContainer instance = new ChatContainer();
 public ChatContainer(){}
 public static ChatContainer getInstance(){
  return instance;
    }
   
 public void addMessage(Char r){
  int count = counter1.getAndIncrement();
//  try {
//   Thread.sleep(500);
//  } catch (InterruptedException e) {
//   // TODO Auto-generated catch block
//   e.printStackTrace();
//  }
  r.setDatatime(new Date().getTime()+count);
  if(count>=capacity){
   counter1.lazySet(0);
   map.put(0, r);
  }else{
   map.put(count, r);
  }
  
  //System.out.println(Thread.currentThread().getName()+"B>>>>>>"+count+"内容:"+Char.getMessage());
//  if(count>capacity){
//   counter.lazySet(0);
//  }
    
     //System.out.println(counter.get()+"((((((((((((((((((((((");
 }
 
 public int getint(){
  return counter1.get();
 }
 
 public TreeMap<Long, Char> getAll(){
  Iterator iter = map.entrySet().iterator();
  tree.clear();
  while (iter.hasNext()) {
      Map.Entry entry = (Map.Entry) iter.next();
      Object val = entry.getValue();
      Char  r = (Char)val;
      tree.put(r.getDatatime(), r);
     }
  return tree;
 }

}

抱歉!评论已关闭.