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

发布于 2024-11-08 16:34:16 字数 562 浏览 0 评论 0原文

我为每个文件创建了线程。代码如下。

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" 。 如何解决这个问题?

I have created threads for each file.code is given below.

AList is an array list contains file name {test1.txt,test2.txt,test3.txt}

for(String str : AList){

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

  }

Filechange class is given below.

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


  }

When running this code, always I am getting output "File Name ::test3.txt" .
How to resolve this problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不羁少年 2024-11-15 16:34:16

制作一个线程列表或其他东西怎么样?我认为,当您一直重新分配“线程 t”时,您会覆盖前一个线程,因此,只有最后一个线程幸存。做这样的事情:

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

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

}

How about making a list of threads or something? I think that when you reassign the "thread t" all the time, you are overwriting the previous thread, thus, only the last thread is surviving. Do somthing like this:

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

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

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文