java - 跟踪不同线程上传的文件

标签 java multithreading io executorservice

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

我正在考虑使用 ExecutorServiceFileUploader 实现 Runnable 来处理这个问题。

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

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

问题是,如果 FileManager 收到重命名数据库中文件的命令,它需要等待当前正在上传文件的所有线程完成后才能重命名文件。

所以问题是,我如何跟踪有多少/哪些线程正在上传给定文件?

最佳答案

您可以使用 CountDownLatch与您要传输的每个文件名关联。您的平均线程应该尝试在闩锁上等待()并仅在获得闩锁时才开始处理,并且您的 child 应该在完成后使用 countDown()

关于java - 跟踪不同线程上传的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5927115/

相关文章:

.net - 在没有线程或异步设备的情况下,异步/等待模式是否无关紧要?

android - 具有 singleInstance launchMode 和新线程的 Activity

c - 将文件内容读取到字符串中,同时跳过前两行

java - 从java中的控制台读取UTF-8标准的字符

java - 如何在静态方法中将 ActionLister 添加到按钮

java - 蓝牙低功耗葡萄糖GATT配置文件测量解析值

java - Android:一个 ProgressBar 和两个 AsyncTask

python - 以可模拟/可测试的方式连接文件

Bash遍历目录中的文件输出不存在的文件

java - 一旦作业执行,Quartz Scheduler 会删除该文件吗?