博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Java]批量存储信息
阅读量:6302 次
发布时间:2019-06-22

本文共 4618 字,大约阅读时间需要 15 分钟。

hot3.png

批量存储信息

import java.util.Collections;import java.util.LinkedList;import java.util.List;import java.util.Properties;import java.util.concurrent.locks.ReentrantLock;import org.apache.log4j.Logger;public class MonitorStoreService5 extends Thread{	static final Logger logger = Logger.getLogger(MonitorStoreService5.class);	boolean isRun = true;	List
 queue = (List
)  Collections.synchronizedList(new LinkedList
()); ReentrantLock lock = new ReentrantLock(); Object obj = new Object(); static int storeOvertime = 1000*3; static int cacheMaxSize = 1000; @Override public void run() { IMonitorService dao = new IMonitorService(); while(isRun){ synchronized(obj){  logger.debug("run() wait"); try{ obj.wait(storeOvertime); }catch(Exception ex){}  } lock.lock(); try{ logger.debug("run() queue.save."); if(!queue.isEmpty() && dao.saveMonitor(queue)){ queue.clear(); } logger.debug("run() queue.clear."); if(queue.size()>=cacheMaxSize){ queue.clear(); } }finally{ lock.unlock(); } } } public boolean append(Properties data){ if(!isRun) return false; if(queue.size()>=cacheMaxSize){ logger.debug("append() queue.size>=cacheMaxSize"); synchronized(obj){  obj.notifyAll();  } logger.debug("append() wait"); synchronized(obj){  try{ obj.wait(100); }catch(Exception ex){}  } } while(lock.isLocked()){ logger.debug("append() lock.isLocked wait"); synchronized(obj){  try{ obj.wait(100); }catch(Exception ex){}  } }// try{ Thread.sleep(1); }catch(Exception ex){}// logger.debug("append() queue.add"); return queue.add(data); } public void shutdown(){ isRun = false; }}
static void t6(){		int ac = 12333;		MonitorStoreService5 ser = new MonitorStoreService5();		ser.start();				T6Thread t1 = new T6Thread();		T6Thread t2 = new T6Thread();		T6Thread t3 = new T6Thread();				t1.ser = ser;		t1.ac = ac;		t2.ser = ser;		t2.ac = ac;		t3.ser = ser;		t3.ac = ac;				t1.start();		t2.start();		t3.start();				try {			Thread.sleep(10000);		} catch (InterruptedException e) {					e.printStackTrace();		}		ser.shutdown();	}		static class T6Thread extends Thread{		MonitorStoreService5 ser = null;		int ac = 11333;		public void run(){//			MonitorStoreService5 ser = new MonitorStoreService5();//			ser.start();						for(int i=0; i

import java.util.LinkedList;import java.util.List;import java.util.Properties;import org.apache.log4j.Logger;public class MonitorStoreService4 extends Thread{	static final Logger logger = Logger.getLogger(MonitorStoreService4.class);	LinkedList
> storeQueue = new LinkedList
>(); List
 current  = new LinkedList
(); boolean isRun = true; Object lock = new Object(); static int waitOvertime = 1000 * 30; static int currntMaxSize = 500; public void run(){ MonitorDao dao = new MonitorDao(); while(isRun){ synchronized(lock){ logger.debug("run() wait"); try{ lock.wait(waitOvertime); }catch(Exception ex){} } while(!storeQueue.isEmpty()){ List
 item = storeQueue.removeFirst(); logger.debug("run() storeQueue.save."); if(!dao.save(item)){ storeQueue.addLast(item); } } } if(!storeQueue.isEmpty()){  List
 item = storeQueue.removeFirst(); logger.debug("run() storeQueue.save."); if(!dao.save(item)){ } } if(!current.isEmpty()){  List
 item = current; logger.debug("run() current.save."); if(!dao.save(item)){ } } logger.debug("run() shutdown."); } // synchronized public boolean append(Properties data){ if(!isRun) return false; if(current.size()>=currntMaxSize){ logger.debug("append() storeQueue.addLast"); storeQueue.addLast(current); current = new LinkedList
(); synchronized(lock){ lock.notifyAll(); } } // try{ Thread.sleep(1); }catch(Exception ex){} logger.debug("append() current.add"); return current.add(data); } public void shutdown(){ isRun = false; }}

fdkljfdljf

import java.util.List;import java.util.Properties;import org.apache.log4j.Logger;public class MonitorDao {	static final Logger logger = Logger.getLogger(MonitorDao.class);		public boolean save(List
 ls){ logger.debug("save size:"+ls.size()); for(Properties i:ls){ } try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } return true; }}

测试

static void t5(){		MonitorStoreService4 ser = new MonitorStoreService4();		ser.start();				for(int i=0; i<100333; i++){			ser.append(new Properties());		}				try {			Thread.sleep(10000);		} catch (InterruptedException e) {					e.printStackTrace();		}		ser.shutdown();	}

转载于:https://my.oschina.net/tangcoffee/blog/298207

你可能感兴趣的文章
我的友情链接
查看>>
关于测量数据用于团队改进的一些事儿
查看>>
SFTP和FTP的区别
查看>>
配置oracle11g EM db control
查看>>
我的友情链接
查看>>
lamp
查看>>
poj 1904 King's Quest
查看>>
VirtualBox安装HMC_V7R760的安装
查看>>
Freebsd系统故障导致系统不能正常启动的恢复数据方法[图]
查看>>
Oracle安装完成后重新安装EM过程
查看>>
阿里巴巴反购雅虎胜算几何?
查看>>
Sql server 2005 热备份布置实战
查看>>
网页常用js代码汇集
查看>>
echarts去掉makeline线的箭头
查看>>
Linux命令历史及帮助
查看>>
常用正则表达式
查看>>
优化企业级备份策略,实现无负载数据库备份及监控
查看>>
MySQL架构组成--存储引擎
查看>>
机加工停台调度算法研发一:待料时间分析
查看>>
获取Exchange中所以数据库名称-数据库EDB大小-用户数量
查看>>