2016-03-01 80 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