Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中for循环的多线程处理_Java_Multithreading - Fatal编程技术网

Java中for循环的多线程处理

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()

好的,我一直在尝试运行一个运行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() {
//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次。感谢您链接的额外资源,这应该会有很大帮助:)