我的任务是创建一个自定义文件备份服务,允许任何使用此服务的笔记本电脑在连接到我们的网络服务器时备份某些目录.我得到的一个要求是,该服务应该基本上优先于用户在该笔记本电脑上的正常活动而不是阻碍性能……太多了.我用
Java创建了这个程序,目的是将它作为服务包装在YAJSW中.我知道我可以将“Process Priority”设置为LOW,这将允许:
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();
}
}
但是,我不确定这实际上会按照我的想法运作.我也在考虑作为替代方案,我可以按顺序运行这些线程,以期提高“优先级产生”的机会.我正在寻找你们都可以借出的任何想法和改进.谢谢.
最佳答案 我觉得你走在正确的轨道上.但是,对于您应该创建多少个线程,会有一个限制.这可能是笔记本电脑,网络I / O或您的服务器上的I / O.我确保以某种方式限制线程数 – 甚至可以配置参数.
在这种情况下,您不必担心Java线程优先级,因为这是JVM中的优先级.