测试类:
public class Test1 {
DbManager dm=null;
MyThread my1=null;
public Test1(){
dm=new DbManager();
System.out.println(dm.n+"----"+dm.residue);
if(dm.n<1){//数据条数小于30000单线程处理
my1=new MyThread(1,dm.sum);
my1.start=1;
my1.end=dm.residue;
Thread t1=new Thread(my1);
t1.start();
}else{//大于30000时
//起n个线程 每个处理30000条数据
for (int i = 1; i <=dm.n; i++) {
new Thread(new MyThread(i)).start();
try {
Thread.sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//处理掉余数
my1=new MyThread(dm.n*30000+1,dm.sum);
Thread t1=new Thread(my1);
t1.start();
}
}
public static void main(String[] args) {
//new Test1();
//迁移完数据,自动关机
try {
Runtime.getRuntime().exec("cmd /c Shutdown -t 10");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
经过多次测试:从sqlserver中读取16w条数据并写入mysql,耗时15min左右。
开始会报错: Java heap space
解决方案:(myeclipse)window->Preferences->Java->Installed JREs,选择当前的JRE,然后edit它;在新窗口里设置Default VM Arguments为 -Xms512M -Xmx512M即可