Java Thread.sleep对等待windows完成文件创建/移动的可运行任务的影响

Java Thread.sleep对等待windows完成文件创建/移动的可运行任务的影响,java,multithreading,threadpool,daemon,thread-sleep,Java,Multithreading,Threadpool,Daemon,Thread Sleep,我有一种情况,即windows文件夹上的文件移动/创建会导致任务使用该路径上的文件继续执行时出现计时问题 因此,我正在使用thread.sleep(30毫秒)休眠运行该任务的deamon线程,直到windows能够正常工作并允许我的任务在没有任何FileNotFoundException的情况下正常运行 初始化类 Thread t = new Thread (processTask); t.setdaemon(true) t.start(); 任务类 class ProcessTask

我有一种情况,即windows文件夹上的文件移动/创建会导致任务使用该路径上的文件继续执行时出现计时问题

因此,我正在使用thread.sleep(30毫秒)休眠运行该任务的deamon线程,直到windows能够正常工作并允许我的任务在没有任何FileNotFoundException的情况下正常运行

初始化类

 Thread t = new Thread (processTask);
 t.setdaemon(true)
 t.start();
任务类

 class ProcessTask() extends Runnable 
  {
   Files.move(source, destination, copyoption);
   Thread.sleep(30ms); //to wait for windows to complete move
   new FileInputstream(sourceFile);
  }
将线程。睡眠(30毫秒)确保只睡眠我当前的执事线程?是否有一种方法可以确认sleep在何处运行线程。sleep()会影响当前线程。它不会使其他线程休眠

但是,在程序逻辑中使用
Thread.sleep()
从来都不是一个好主意。尤其是在等待其他动作完成时。这些应该通过通知机制来处理,而不是等待随机数量,并希望一切都能正常工作。

Thread.sleep()
会影响当前线程。它不会使其他线程休眠


但是,在程序逻辑中使用
Thread.sleep()
从来都不是一个好主意。尤其是在等待其他动作完成时。这些应该通过通知机制来处理,而不是等待随机数量,并希望一切都能正常工作。

您的代码相互矛盾。如果您从
移动到
目标
,很明显您不能在之后打开源代码,但是,
源文件
是一个操作中根本不涉及的变量。此外,
FileInputstream
使用的库代码与NIO不同。假设
destination
是一个
路径
,表示您实际想要打开的内容,我会尝试
文件。newInputStream(destination)
。您的代码相互矛盾。如果您从
移动到
目标
,很明显您不能在之后打开源代码,但是,
源文件
是一个操作中根本不涉及的变量。此外,
FileInputstream
使用的库代码与NIO不同。假设
destination
是一个
路径
代表您实际想要打开的内容,我会尝试
文件。newInputStream(destination)