我遇到的情况是,在 Windows 文件夹上移动/创建文件会导致使用该路径上的文件继续执行任务的计时问题
因此,我正在使用 thread.sleep(30ms) hibernate 运行该任务的守护线程,直到 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);
}
thread.sleep(30ms) 肯定只 hibernate 我当前的守护线程吗?有没有办法确认 sleep 在哪里起作用
最佳答案
Thread.sleep()
影响当前线程。它不会让其他线程进入休眠状态。
但是,对于程序逻辑来说,使用 Thread.sleep() 从来都不是一个好主意。特别是在等待其他操作完成时。这些应该通过通知机制来处理,而不是等待随机数量并希望一切顺利。
关于java - Thread.sleep 对等待 Windows 完成文件创建/移动的可运行任务的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42070490/