public class ThreadImport {
static Connection conn;
public void multiThreadImport( final int ThreadNum){
final CountDownLatch cdl= new CountDownLatch(ThreadNum);
long starttime=System.currentTimeMillis();
for(int k=1;k<=ThreadNum;k++){
new Thread(new Runnable() {
@Override
public void run() {
// 获得连接
try {
conn = (new DatabaseUtils.Builder().setHost("localhost").setDbName("study").setUser("study")
.setPassword("123").builder()).getConection();
} catch (ClassNotFoundException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//插入500/线程数条数据
for(int i=1;i<=500/ThreadNum;i++){
String uuid=UUID.randomUUID().toString();
try {
PreparedStatement ps = conn.prepareStatement("INSERT into demo(name,adress) values (?, ?)");
// ps.addBatch("insert into demo(name,adress) values('"+uuid+"','"+uuid+"')");
ps.setString(1, uuid);
ps.setString(2, uuid);
ps.executeUpdate();
if(i%500==0){
ps.executeBatch(); //500条执行一次
System.out.println("INSERT into demo(name,adress) values " + uuid + uuid);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
cdl.countDown();
}
}).start();
}
try {
cdl.await();
long spendtime=System.currentTimeMillis()-starttime;
System.out.println( ThreadNum+"个线程花费时间:"+spendtime);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
ThreadImport ti=new ThreadImport();
ti.multiThreadImport(1);
System.out.println("+++1个线程结束+++");
ti.multiThreadImport(5);
System.out.println("+++5个线程结束+++");
ti.multiThreadImport(8);
System.out.println("+++8个线程结束+++");
ti.multiThreadImport(10);
System.out.println("+++10个线程结束+++");
ti.multiThreadImport(20);
System.out.println("+++20个线程结束+++");
ti.multiThreadImport(40);
System.out.println("+++40个线程结束+++");
System.out.println("笔记本CPU数:"+Runtime.getRuntime().availableProcessors());
}
}