java在扫描文件的同时怎么开启多线程删除啊

求问Java在扫描文件的时候,需要保留最新的10条, 但是怎么同时开启一个线程来删除其余的文件啊

 package foo;

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

public class Demo {
    public static void main(String[] args) {


        try {
            String path = "C:/Users/Administrator/Desktop/video/QXHDA012";
            File file = new File(path);
            File[] tempList = file.listFiles();
            // 先对文件进行排序
            Arrays.sort(tempList,
                    new Demo.CompratorByLastModified());
            List<String> list = new ArrayList<String>();
            for (int i = 0; i < tempList.length; i++) {
                String fnameString = tempList[i] + "";
                String fileName = fnameString.substring(fnameString
                        .lastIndexOf("\\") + 1);
                // System.out.println("排序后"+fileName);
                //把最新的5个放入集合中
                if (i <= 4) {
                    list.add(fileName);
                }
                //留下最新的10个文件 其余全部删除
                if (i > 9) {
                    File file2 = new File(fnameString);
                    file2.delete();
                }
            }
            System.out.println(list);
        } catch (Exception e) {
        }
    }

    // 创建一个排序的方法
    static class CompratorByLastModified implements Comparator<File> {
        public int compare(File f1, File f2) {
            long diff = f1.lastModified() - f2.lastModified();
            if (diff > 0) {
                return -1;
            } else if (diff == 0) {
                return 0;
            } else {
                return 1;
            }
        }
    }

}

上面是这个demo 这样可以删除 但是我不知道怎么开启多线程来删除 求大神帮帮忙

2个回答

把需要删除的文件放到一个链表,然后比如开4个线程,每个线程分链表中的文件的1/4,各个线程开始删除自己得到的文件

qq_37270905
qq_37270905 额 我就是开不来线程 不知道在哪开启好
2 年多之前 回复

循环的时候将最新的10个文件路径之外的文件路径写入一个list,在最后开个线程去遍历删除就行了。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!