gpt4 book ai didi

java多线程初学者问题

转载 作者:行者123 更新时间:2023-12-01 17:09:30 24 4
gpt4 key购买 nike

我正在尝试学习多线程编程,但我对必须采取的方法有一些疑问。
因此,在我的具体情况下,我想构建一个重命名 1000 个文件的程序,并且我正在考虑创建一个工作类:

public class  Worker implements Runnable {

private List<File> files ;

public Worker(List<File> f){
files = f;
}

public void run(){
// read all files from list and rename them
}
}

然后在主类中执行以下操作:

Worker w1 = new Worker(..list of 500 files...) ;
Worker w2 = new Worker(..list of the other 500 files...) ;

Thread t1 = new Thread(w1,"thread1");
Thread t2 = new Thread(w2,"thread2");

t1.start();
t2.start();

运行它不会给我带来并发问题,因此我不需要同步代码,但我不确定这是否是正确的方法......?

或者我应该只创建一个 Worker() 实例并传递整个 1000 个文件列表,并注意无论有多少线程访问该对象,都不会从列表中获取相同的文件?

即:

Worker w1 = new Worker(..list of 1000 files...) ;

Thread t1 = new Thread(w1,"thread1");
Thread t2 = new Thread(w1,"thread2");
t1.start();
t2.start();

我应该如何继续?

最佳答案

你说的第一种方法是正确的。您需要创建两个Worker,因为每个worker 将处理不同的文件列表。

Worker w1 = new Worker(..list of 500 files...) ; // First List
Worker w2 = new Worker(..list of the other 500 files...) ; // Second List
Thread t1 = new Thread(w1,"thread1");
Thread t2 = new Thread(w2,"thread2");

t1.start();
t2.start();

这很简单,两个加载 500 个文件的不同线程将同时执行。

关于java多线程初学者问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24300017/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com