黑马程序员技术交流社区
标题:
为什么只有一个线程在运行
[打印本页]
作者:
心弦上的景致
时间:
2013-4-11 20:45
标题:
为什么只有一个线程在运行
import java.sql.*;
public class AddRecord {
public static int COUNT = 1000000;
public static int THREAD_NUM = 100;
public static String sql = "INSERT table1(id,password) VALUES(?,?)";
public static void main(String[] args) {
int start = 0;//每个线程开始的位置
int count = COUNT / THREAD_NUM;//每个线程分配的任务量
for(int i = 0; i < THREAD_NUM; i++) {
String threadName = "{ " + i + " }";//线程名
System.out.println("Start Thread : " + threadName);
new AddThread(threadName, start, count).start();
start +=count;
}
}
}
class AddThread extends Thread {
private int start,count;
public AddThread(String name, int start, int count) {
super(name);
this.start = start;
this.count = count;
}
public void run() {
try {
int finished = 1;
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?" +
"user=root&password=123456&useUnicode=true");
PreparedStatement ps = con.prepareStatement(AddRecord.sql);
for (int i = start; i < count; i++) {
String pw = "password"+i;
ps.setInt(1, i);
ps.setString(2,pw);
ps.execute();
if(i >= (start+count*finished/100)) {
System.out.println("Thread : " + getName() + "complete " + finished + "%");
finished++;
}
}
} catch (Exception e) {
System.err.println("Thread : " + getName() + "error!exit");
}
}
}
复制代码
作者:
HM黄祥为
时间:
2013-4-11 21:12
不知道你是什么意思 在我得机器上运行 是100个线程都启动了
作者:
通行天下
时间:
2013-4-11 21:31
其实,在内存中的线程同步执行是指CPU在不同的时刻可以执行不同的线程,而且每个线程获得的执行机会是随机的;但是在一个时间点上,CPU只能执行一个线程;又由于CPU的执行速度很快,所以我们会觉得所有线程都是在同时被CPU所执行,其实不然。希望对你有用。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2