2016-03-01 46 views
4

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

进程的线程被更高优先级的任何进程的线程抢占。

因此,我一直在想,我会利用每个文件传输线程的思路,这些线程可以做到这一点。目前,我有这样的事情:

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

但是,我不知道这将实际工作,我想。我也在考虑替代这一点,我可以按顺序运行这些线程,希望能够提高“优先收益率”的机会。我正在寻找你们可以借出的任何想法和改进。谢谢。

回答

2

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

在这种情况下,您不需要担心Java线程的优先级,因为这是JVM中的优先级。

+0

这是一个非常好的观点,我忽略了关于线程限制。谢谢。 – JagerSOE