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

    技术2025-10-30  4

    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; }

    }

    最新回复(0)