Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.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中,动态创建时如何处理线程_Java_Multithreading - Fatal编程技术网

在java中,动态创建时如何处理线程

在java中,动态创建时如何处理线程,java,multithreading,Java,Multithreading,我已经为每个文件创建了线程。下面给出了代码 public class C implements Runnable { private String tmp; public Filechange(String strg) { this.tmp = strg; } public void run() { system.out.println("File Name ::"+tmp); } t.sleep(1000); t.run(); } 列表

我已经为每个文件创建了线程。下面给出了代码

public class C implements Runnable {

  private String tmp;


  public Filechange(String strg) {
   this.tmp = strg;
  }

  public void run() {

  system.out.println("File Name ::"+tmp);

  } t.sleep(1000);
   t.run();


  }
列表是一个数组列表,包含文件名
{test1.txt、test2.txt、test3.txt}

for(String str : AList){

  thread t = new Thread(new Filechange(str));
  t.start();

  }
下面给出了Filechange类

public class C implements Runnable {

  private String tmp;


  public Filechange(String strg) {
   this.tmp = strg;
  }

  public void run() {

  system.out.println("File Name ::"+tmp);

  } t.sleep(1000);
   t.run();


  }
运行此代码时,我总是得到输出
“文件名::test3.txt”

如何解决这个问题?

制作一个线程列表怎么样?我认为,当您一直重新分配“线程t”时,您正在覆盖上一个线程,因此,只有最后一个线程仍然存在。做这样的事:

List<Thread> threadList = new ArrayList<Thread>();
for(String str : AList){

  threadList.add(new Thread(new Filechange(str)));
  threadList.get(threadList.size()-1).start();

}
List-threadList=new-ArrayList();
for(字符串str:AList){
添加(新线程(新文件更改(str));
get(threadList.size()-1.start();
}

您在发布代码时出错。请更正它发布的代码是否编译?你的主要方法在哪里?这不可能是你真正的代码(它不会编译)。请发布您的实际代码。您不能仅仅通过重新分配变量来“覆盖”线程。线程对象将一直保留,直到线程完成。我会将新创建的线程分配给一个局部变量,而不是
threadList.get…
调用。它会更容易阅读。