new (读取, "线程 1").start();new (读取, "线程 2").start();new (读取, "线程 3").start();new (读取, "线程 4") ).start();new(读取,“线程 5”).start(); 我们无法控制这些线程的执行顺序,线程并发是不可避免的。 要实现你的功能,只有一种方法可以让这5个线程达成共识,就是让他们都知道除了他之外的线程是否读过某个文件,如果读过就不会读再次。 这需要线程之间的通信来完成。 这里最好的方法是定义一个全局变量。 当线程开始读取文件时,将文件名信息存储在全局变量中。 当其他线程读取它时,它会判断该文件是否已存储在全局变量中。 如果它已经存在,则不会检索该文件。 总体思路是这样的。 所以你必须修改这段代码,在main中创建一个全局变量LIST,然后将这个LIST传递到这5个线程中才能达到效果。 当然,你也可以将列表设置成这样,这样更容易做到。 需要注意的是,在每个线程中,都需要在这个全局链表中添加一个线程锁。 当任何线程对链表进行操作时,让其他线程处理等待状态。