gpt4 book ai didi

Java 多线程与打开文件

转载 作者:行者123 更新时间:2023-12-02 01:50:07 25 4
gpt4 key购买 nike

我有一个txt文件:order_me.txt,其中有一些整数需要使用4个线程进行排序。他们需要同时工作,但不能做同样的事情。我已经设法对整数进行排序,但有些东西无法正常工作......

这是线程类:

public class Threading {

static List<Integer> integersCopy = new ArrayList<>();

public static void main(String[] args) {
openFile();
Thread t1 = new Thread(new Command("thread 1", integersCopy));
t1.start();

Thread t2 = new Thread(new Command("thread 2", integersCopy));
t2.start();

Thread t3 = new Thread(new Command("thread 3", integersCopy));
t3.start();

Thread t4 = new Thread(new Command("thread 4", integersCopy));
t4.start();

try {
if (t1.isAlive())
t1.join();
if (t2.isAlive())
t2.join();
if (t3.isAlive())
t3.join();
if (t4.isAlive())
t4.join();
} catch (Exception e) {
System.out.println("Exception with threads");
}
}

public static void openFile() {
File file = new File("order_me.txt");
try {
Scanner scanner = new Scanner(file);
List<Integer> integers = new ArrayList<>();
while (scanner.hasNext()) {
if (scanner.hasNextInt()) {
integers.add(scanner.nextInt());
} else {
scanner.next();
}
}
integersCopy = integers;
System.out.println("File opened successfully");

} catch (Exception e) {
System.out.println("Triggered exception");
}
}

这是排序类:

    import java.util.Collections;
import java.util.List;

public class Command implements Runnable {
String threadName;
List<Integer> listOfInts;

Command(String name, List<Integer> list) {
threadName = name;
listOfInts = list;
}

@Override
public void run() {
for (int i = 0; i < listOfInts.size(); i++) {
Collections.sort(listOfInts);
System.out.print(+listOfInts.get(i) + " ");
}
}
}

最佳答案

一旦一个线程对整数进行排序,就没有必要尝试在多个线程中执行相同的操作,事实上,因为这不是以线程安全的方式完成的,所以您可能会损坏列表。

简而言之,使用一个线程。

关于Java 多线程与打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53105464/

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