Java 跟踪不同线程上载的文件
在java中,我试图编写一个文件管理器,它保存一个文件目录,并根据请求将它们上载到其他文件管理器。每次上传请求进来时(通过套接字),都会创建一个新线程来处理所请求文件的上传 我正在考虑使用Java 跟踪不同线程上载的文件,java,multithreading,io,executorservice,Java,Multithreading,Io,Executorservice,在java中,我试图编写一个文件管理器,它保存一个文件目录,并根据请求将它们上载到其他文件管理器。每次上传请求进来时(通过套接字),都会创建一个新线程来处理所请求文件的上传 我正在考虑使用ExecutorService和FileUploader实现Runnable来处理这个问题 i、 e.如果sessions是ExecutorService,mySocket是FileManager侦听请求的套接字,则每个线程的创建类似于: sessions.execute(new FileUploader(my
ExecutorService
和FileUploader实现Runnable
来处理这个问题
i、 e.如果sessions是ExecutorService,mySocket是FileManager侦听请求的套接字,则每个线程的创建类似于:
sessions.execute(new FileUploader(mySocket.accept()));
问题是,如果FileManager获得重命名其数据库中某个文件的命令,它需要等待当前上载该文件的所有线程完成,然后才能重命名该文件
所以问题是,我如何跟踪有多少/哪些线程正在上传给定的文件 您可以使用与要传输的每个文件名关联的。您的平均线程应该尝试在闩锁上等待()并仅在获得闩锁时才开始处理,并且您的孩子应该在完成后使用倒计时()您可以使用与要传输的每个文件名关联的。您的平均线程应该尝试在闩锁上等待()并仅在获得闩锁时才开始处理,您的孩子应该在完成时使用倒计时()实际上,在Linux上,您可以在读取或写入文件时重命名文件,而另一个线程将继续正常工作(只要它只使用文件句柄,不做关闭和重新打开文件之类的花哨事)。实际上,在Linux上,你可以在读写文件时重命名文件,而另一个线程将继续正常工作(只要它只使用文件句柄,而不做关闭和重新打开文件之类的花哨事)。