Java 多线程内部for循环

Java 多线程内部for循环,java,multithreading,Java,Multithreading,我试图从一个目录中读取多个文件,并为每个文件创建一个单独的线程。在迭代循环时,匿名内部类不能使用非最终变量 我的问题是如何在一个循环中创建多个线程。(我需要为每个文件手动创建线程,不能使用executor服务或其他东西) 改变 到 编辑您声明: 它在工作,但最后的变量是常量,这里x改变为store.howz的每个元素 x是for each循环的参数,可以根据for each循环的定义声明为final。每次循环循环时,就好像x被重新创建一样 根据增强型for循环部分: 增强型for语句相当于以

我试图从一个目录中读取多个文件,并为每个文件创建一个单独的线程。在迭代循环时,匿名内部类不能使用非最终变量

我的问题是如何在一个循环中创建多个线程。(我需要为每个文件手动创建线程,不能使用executor服务或其他东西)

改变


编辑您声明:


它在工作,但最后的变量是常量,这里x改变为store.howz的每个元素

x
是for each循环的参数,可以根据for each循环的定义声明为final。每次循环循环时,就好像x被重新创建一样


根据增强型for循环部分:

增强型for语句相当于以下形式的基本for语句:

这告诉我期末考试应该是这样的:

for (I #i = Expression.iterator(); #i.hasNext(); ) {
    final VariableModifiersopt TargetType Identifier =
        (TargetType) #i.next();
    Statement
}
因此,
x
实际上是上面的标识符,并且在循环的每次迭代中都被重新声明

在您的代码中,我认为它相当于:

  for (Iterator<File> iterator = Arrays.asList(scores).iterator(); iterator.hasNext();) {
     final File file = iterator.next();
     new Thread(new Runnable() {
        public void run() {
           new de().commit(file);
        }
     }).start();  
  }

它在工作,但最后的变量是常量,这里x改变为store的每个元素working@Sanjana:请参阅编辑2以回答问题。谢谢编辑您发布的代码!您确定从多个线程读取这些文件将提高应用程序性能吗?请记住,硬盘的读取头不能位于不同的位置。
for (final File x: store)
for (I #i = Expression.iterator(); #i.hasNext(); ) {
    VariableModifiersopt TargetType Identifier =
        (TargetType) #i.next();
    Statement
}
for (I #i = Expression.iterator(); #i.hasNext(); ) {
    final VariableModifiersopt TargetType Identifier =
        (TargetType) #i.next();
    Statement
}
  for (Iterator<File> iterator = Arrays.asList(scores).iterator(); iterator.hasNext();) {
     final File file = iterator.next();
     new Thread(new Runnable() {
        public void run() {
           new de().commit(file);
        }
     }).start();  
  }
   for (final File x: store){   
       new Thread(new Runnable() {

         @Override
         public void run() {
           new de().commit(x);  // "de" should be "De" since it is a class
         }
       }).start();
    }