У меня есть требование, когда мне нужно обрабатывать несколько файлов параллельно, я сделал следующее: он работает отлично, но как я могу сделать его более оптимальным, с нетерпением жду любых предложений.Параллельная обработка файлов
long start = System.currentTimeMillis();
File [] files=new File("C:\\ftp").listFiles();
//System.out.println(files.length);
ExecutorService executor=Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
// System.out.println("available processors.."+Runtime.getRuntime().availableProcessors());
if(files.length>=1)
{
for(int i = 0;i<files.length; i++){
System.out.println("reading..."+i);
Runnable workerThread = new FileWorkerThread(files[i]);
executor.execute(workerThread);
}
executor.shutdown();
while (!executor.isTerminated()) {
}
// то у меня есть пробег(), который в основном чтение/запись к files.Is это хороший подход, Есть ли что-нибудь, который я могу сделать, чтобы сделать его лучше.
Используйте 'executor.awaitTermination (...)' после выключения вместо цикла занятости. – Pyranja
Лучше во что? –
У вас есть занятая голова в качестве последнего звонка, это ** очень ** плохая практика. Используйте 'executor.awaitTermination (...)' как предложено @Pyranja. –