在 java 中,我正在尝试编写一个 FileManager,它包含一个文件目录并根据请求将它们上传到其他 FileManager。每次上传请求进入(通过 Socket)时,都会创建一个新线程来处理所请求文件的上传。
我正在考虑使用 anExecutorService
和 aFileUploader implements Runnable
来处理这个问题。
即,如果 session 是 ExecutorService 并且 mySocket 是 FileManager 正在侦听请求的套接字,则每个线程的创建将类似于:
sessions.execute(new FileUploader(mySocket.accept()));
问题在于,如果 FileManager 收到重命名其数据库中的文件的命令,它需要等待当前正在上传文件的所有线程完成,然后才能重命名文件。
所以问题是,我如何跟踪有多少/哪些线程正在上传给定文件?