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