[Java]批量存储信息

批量存储信息

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<List<Properties>> storeQueue = new LinkedList<List<Properties>>();
	List<Properties> current  = new LinkedList<Properties>();
	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<Properties> item = storeQueue.removeFirst();
				logger.debug("run() storeQueue.save.");
				if(!dao.save(item)){
					storeQueue.addLast(item);
				}
			}
		}

		if(!storeQueue.isEmpty()){ 
			List<Properties> item = storeQueue.removeFirst();
			logger.debug("run() storeQueue.save.");
			if(!dao.save(item)){
			}
		}

		if(!current.isEmpty()){ 
			List<Properties> 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<Properties>();
			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<Properties> 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();
	}

[Java]批量存储信息

时间: 2024-10-05 11:05:11

[Java]批量存储信息的相关文章

Java批量插入、更新数据

Java的批量添加数据,多个字段同时添加多条数据,我不知道你遇到过没有.今天我们就以一个具体的实例来说一下Java的批量添加数据,面向的是Oracle数据库. 前台页面: <span style="font-size:14px;"><body class="main_body" scroll="no"> <div class="employee_gun_dong"> <form nam

android 手机去哪儿7.2版本客户端 账号存储信息分析

1.data/data/com.qunar sharepref 文件夹下的Qunarperferences.xml文件中 username,phone等均为加密处理过字段   2.jdgui下查找关键字_phone的函数 3.分析读取sharepref函数及java层加密函数以及调用native 函数.   4.加载对应so,分析导出函数 jni动态注册所绑定的函数. da绑定函数为dumpalso.  5.加载so dumpalso下断触发断点调试跟踪.跟踪函数发现0100ffff为头标志不参

ROI的使用与批量存储

1. ROI简介 ROI(Region of Interest)是指图像中的一个矩形区域,可能你后续的程序需要单独处理这一个小区域,如图所示: 图1 ROI的解释 ROI在实际工作中有很重要的作用,在很多情况下,使用它们会提高计算机视觉代码的执行速度.这是因为它们允许对图像的某一小部分进行操作,而不是对整个图像进行运算.在OpenCV中,所有的对图像操作的函数都支持ROI,如果你想打开ROI,可以使用函数cvSetImageROI(),并给函数传递一个矩形子窗口.而cvResetImageROI

九、java中类型信息

一.什么是类型信息? 简单的理解 ,“类型信息”就是一种机制, java中用这种机制来实现: 在程序运行过程中发现和使用“类”信息. java的类型信息主要有两块组成:RTTI和反射. 二.什么是RTTI? RTTI,全称是Run-Time Type Information  ,名字的含义是在运行时识别一个对象的类型. 1.Class对象 java中用一个特殊的对象Class, 通过它来执行其RTTI(这是一种思想, 用一个Class来表示所有类型对象,通过具体的Class里面的属性再来区分到底

django orm 批量存储数据

项目中 需要大量数据的保存操作,每条执行save操作效率太低,在官网上找到bull_create 的批量存储方式,效率提高很多 Insert in bulk When creating objects, where possible, use the bulk_create() method to reduce the number of SQL queries. For example: Entry.objects.bulk_create([ Entry(headline="Python 3.

java 批量插入10万条数据

for (int i = 0; i < 100000; i++) { dbHelper.insert("INSERT aaa(name) Values ('1')"); } 运行时间==780450ms conn = getConn(); // JAVA默认为TRUE,我们自己处理需要设置为FALSE,并且修改为手动提交,才可以调用rollback()函数 conn.setAutoCommit(false); st = conn.createStatement(); long s

asp中用于存储信息的变量

假如在子程序之外声明变量,那么这个变量可被 ASP 文件中的任何脚本改变.假如在子程 序中声明变量,那么当子程序每次执行时,它才会被创建和撤销. 实例: 声明变量 变量用于存储信息.本例演示如何声明变量,为变量赋值,并在程序中使用这个变量 声明数组 数组用于存储一系列相关的数据项目.本例演示如何声明一个存储名字的数组. 循环生成 HTML 标题 如何循环生成 6 个不同的 HTML 标题. 使用 Vbscript 制作基于时间的问候语 本例将根据服务器时间向用户显示不同的消息. 使用 JavaS

iOS真机沙盒文件查看 图片批量存储/获取/删除

转载请标注来自:http://blog.csdn.net/u014202635/article/details/46863629 1. 选Devices 2. 3. 选中第二行 4. 保存在桌面 5. 右击选中显示包内容 6. 以上环境为x-code6.3.1 //---------------------------------------------------------------------------------------------------------------------

JAVA变量存储

1.java变量存储域 java变量的存储区域主要放在以下几个地方: (1)寄存器:可以说是最快的存储区,在C/C++中可以声明寄存器变量,但是在java中不能声明寄存器变量,只是编译器在编译时确定. (2)栈:存放关于基本类型数据和对象的引用,但是对象本身并不在栈里,(通过new出来的)对象放在堆里或者常量池中(字符串的常量对象就放在常量池中). (3)堆:用于存放new出来的对象. (4)常量池:存放字符串常量和基本类型数据的常量(通过 public static final修饰). (5)