Java中for循环的多线程处理
好的,我一直在尝试运行一个运行60次的for循环。在这个for循环中,我使用Thread.sleep(2000);对服务器执行ping操作。我想对这个线程执行10次,但是通过for循环执行一个单独的循环。同时,我希望另外6个线程运行自己的10个线程,这样这个洞的进程会加快,并在大约12秒内完成Java中for循环的多线程处理,java,multithreading,Java,Multithreading,好的,我一直在尝试运行一个运行60次的for循环。在这个for循环中,我使用Thread.sleep(2000);对服务器执行ping操作。我想对这个线程执行10次,但是通过for循环执行一个单独的循环。同时,我希望另外6个线程运行自己的10个线程,这样这个洞的进程会加快,并在大约12秒内完成 for(int i = 0; i < 6; i++) { //I am starting a new thread here. } @Override public void run()
for(int i = 0; i < 6; i++) {
//I am starting a new thread here.
}
@Override
public void run() {
//THIS is where i want a each thread to be doing 10 each to speed up the process.
for(int i = 0; i < 60; i++) {
//Pinging server.
Thread.sleep(2000L);
//Gets info from server here. That is why there is a 2 second delay.
}
}
for(int i=0;i<6;i++){
//我在这里开始一个新的线程。
}
@凌驾
公开募捐{
//这就是我希望每个线程执行10次以加快进程的地方。
对于(int i=0;i<60;i++){
//ping服务器。
睡眠(2000L);
//从这里的服务器获取信息。这就是为什么有2秒的延迟。
}
}
如果这很难理解,我很抱歉,但我试着用最简单的方式来阐述
提前感谢。在最初的for循环中,您应该创建可调用实例,而不是创建线程。将它们添加到列表中,创建一个执行器,并将该列表传递给执行器(例如FixedThreadPool)。然后执行执行器,它们将并行运行。在所有这些提示之后,我将把实现交给您,因为这看起来像是一个家庭作业问题。如果我理解正确,您不会依赖于结果,对吗?下面是一份由代码编写的快速手稿:
Thread[] t = new Thread[6];
for(int i = 0; i < 6; i++) {
t[i] = new Thread() {
@Override
public void run() {
for(int i = 0; i < 60; i++) {
//Pinging server.
Thread.sleep(2000L);
//Gets info from server here. That is why there is a 2 second delay.
}
}
};
t[i].start();
}
Thread.sleep(longEnough);
Thread[]t=新线程[6];
对于(int i=0;i<6;i++){
t[i]=新线程(){
@凌驾
公开募捐{
对于(int i=0;i<60;i++){
//ping服务器。
睡眠(2000L);
//从这里的服务器获取信息。这就是为什么有2秒的延迟。
}
}
};
t[i].start();
}
睡眠(足够长);
这是最便宜的启动线程的变体,但要小心,它不是专业的!您至少应该在线程数组上循环调用join(),以便等待足够长的时间,而不是使用时间常数
如果你想认真处理线程,请考虑使用java的Excel服务(参见)或java 7的FokCoin()< /P>你的问题是什么?U是指你想ping并在for循环的每个遍中得到10次回复吗?这意味着每个线程有600个ping,6个线程总共有3600个ping。基本上,我想将6个线程中的每个线程分配给10个部分,每个for循环运行60次。感谢您链接的额外资源,这应该会有很大帮助:)