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

时间:2011-05-21 10:49:47

标签: java multithreading

我为每个file.code创建了线程,如下所示。

AList是一个包含文件名{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();


  }

运行此代码时,我总是得到输出"File Name ::test3.txt"。 如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

如何制作线程列表或其他内容?我认为当你一直重新分配“线程t”时,你将覆盖前一个线程,因此,只有最后一个线程存活。做这样的事情:

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

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

}