Java 进程为其他窗口进程提供优先级



我的任务是创建自定义文件备份服务,该服务允许使用此服务的任何笔记本电脑在连接到我们的网络服务器时备份某些目录。我得到的一个要求是,该服务基本上应该优先考虑用户在该笔记本电脑上的正常活动,并且不妨碍性能......太多了。我用Java创建了这个程序,目的是用YAJSW将其包装为服务。我知道我可以将"进程优先级"设置为低,这将允许:

进程的线程

被以较高优先级运行的任何进程的线程抢占。

正因为如此,我想我会利用每个文件传输的线程,并认为这些线程可以做到这一点。我目前有这样的东西:

public void copyFiles() {
    for (ScannedFile file : filesToCopy) {
        new Thread() {
            @Override
            public void run() {
                fileCopyUsingStreams(file);
            }
        }.start();
    }
}

但是,我不确定这是否真的会按照我的想法工作。我还在考虑作为替代方案,我可以按顺序运行这些线程,希望提高"优先级收益"的机会。我正在寻找你们都可以借出的任何想法和改进。谢谢。

我觉得

你走在正确的轨道上。 但是,对于您应该创建的线程数量,某处会有限制。 这可能是笔记本电脑上的 I/O、网络 I/O 或您的服务器。 我会确保你以某种方式限制线程的数量 - 甚至可能是一个可配置的参数。

在这种情况下,您实际上不需要担心 Java 线程优先级,因为这会在 JVM 中处理优先级。

最新更新