跟踪不同线程上传的文件

时间:2011-05-08 11:20:45

标签: java multithreading io executorservice

在java中,我试图编写一个包含文件目录的FileManager,并根据请求将它们上传到其他FileManagers。每次上传请求进入(通过套接字)时,都会创建一个新线程来处理所请求文件的上传。

我在考虑使用ExecutorServiceFileUploader implements Runnable来解决这个问题。

即。如果session是ExecutorService而mySocket是FileManager正在侦听请求的套接字,则每个线程的创建将类似于:

sessions.execute(new FileUploader(mySocket.accept()));

问题是如果FileManager获得重命名其数据库中的文件的命令,则需要等待当前上传文件的所有线程在重命名文件之前完成。

所以问题是,如何跟踪上传给定文件的线程数?

1 个答案:

答案 0 :(得分:1)

您可以使用与要传输的每个文件名关联的CountDownLatch。你的平均线程应该尝试在latch上使用await()并在它获取锁存器时开始处理,你的孩子在完成时应该使用countDown()