java里面多线程,自己写的小例子

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

某天,在群里看见有个人 问 sqlService里面有2000万条数据 需要转储到orcale中。什么方式比较好,后来一琢磨非多线程莫属啊~;

我这里没有那么多数据,所以我就模拟了下 一次存入10万条数据,看有多快~;上代码。

在数据库创建 表 t_test 2个字段 id name

定义一个类 继承Runnable 实现run方法

public class Test implements Runnable{

//实现run方法

public void run() {

//定义一个集合~这个集合是用来装入存入失败的数据

List<Integer> list = new ArrayList<Integer>();

//这里就是要设置存入的数据 200个

for (int i = 0; i < 200; i++) {

String sql="INSERT into t_test VALUES(null,"+i+")";

try {

//jdbc方式存入,这个是自己写的工具类

JDBCUtils.executeSQL(sql);

} catch (Exception e) {

//当出现错误的时候 会把没有存入的装入集合里面

list.add(i);

}

}

//判断集合是否为空,不为空证明有数据没有存入,利用递归的方式在进行存入

if(!list.isEmpty()){

System.out.PRintln("进来了");

dg(list);

}

}

//需要进行递归的操作

public void dg(List<Integer> list){

ArrayList<Integer> list2 = new ArrayList<Integer>();

for (Integer i : list) {

String sql="INSERT into t_test VALUES(null,"+i+")";

try {

JDBCUtils.executeSQL(sql);

} catch (Exception e) {

list2.add(i);

}

}

if(!list2.isEmpty()){

System.out.println("进行递归");

dg(list2);

}else{

System.out.println("结束");

}

}

public static void main(String[] args) {

Thread thread = null;

//开启500跳线程

for (int i = 0; i < 500; i++) {

//需要开启线程的类

thread = new Thread(new Test());

//开启现成

thread.start();

}

}

}

这只是一个思路~转储数据库的话其实和这个差不多;

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航