Java进程优先于其他windows进程
我的任务是创建一个自定义文件备份服务,允许任何使用该服务的笔记本电脑在连接到我们的网络服务器时备份某些目录。我得到的一个要求是,该服务应该基本上优先于用户在该笔记本电脑上的正常活动,而不影响性能。。。太多我用Java创建了这个程序,目的是用YAJSW将它包装成一个服务。我知道我可以将“流程优先级”设置为低,这将允许:
The threads of the process are preempted by the threads of any process running in a higher priority level.
正因为如此,我想我会利用每个文件传输一个线程的想法,这些线程可以做到这一点。我现在有这样的东西:
public void copyFiles() {
for (ScannedFile file : filesToCopy) {
new Thread() {
@Override
public void run() {
fileCopyUsingStreams(file);
}
}.start();
}
}
然而,我不确定这是否真的会像我所想的那样起作用。我还认为,作为替代方案,我可以按顺序运行这些线程,以期提高“优先级收益”的机会。我正在寻找你们所有人都能提供的任何想法和改进。谢谢
# 1 楼答案
我觉得你在正确的轨道上。然而,对于应该创建多少线程,在某些地方是有限制的。这可能是笔记本电脑上的I/O、网络I/O或您的服务器。我会确保你以某种方式限制线程的数量——甚至可能是一个可配置的参数
在这种情况下,您实际上不需要担心Java线程优先级,因为这是在JVM中处理优先级的问题