/ / Proces Java dający pierwszeństwo innym procesom systemu Windows - Java, Windows, wielowątkowość

Proces Java daje pierwszeństwo innym procesom Windows - java, windows, wielowątkowość

Zadanie polegało na utworzeniu niestandardowego plikuUsługa tworzenia kopii zapasowych, która pozwoliłaby wszystkim komputerom przenośnym korzystającym z tej usługi tworzyć kopie zapasowe niektórych katalogów po połączeniu z naszym serwerem sieciowym. Wymagane ode mnie jest to, że usługa powinna zasadniczo dawać pierwszeństwo normalnej aktywności użytkownika na tym laptopie i nie ograniczać wydajności ... za bardzo. Stworzyłem ten program w Javie z zamiarem zawinięcia go jako usługi z YAJSW Wiem, że mogę ustawić „Priorytet procesu” na NISKI, co pozwoliłoby:

Wątki procesu są wyprzedzane przez wątki dowolnego procesu działającego na wyższym poziomie priorytetu.

Z tego powodu myślałem, że wykorzystam wątek na przesyłanie plików z myślą, że te wątki właśnie to zrobią. Obecnie mam coś takiego:

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

Nie jestem jednak pewien, czy tak się staniedziałaj tak, jak myślę. Zastanawiałem się także nad tym alternatywnie, że mogę sekwencyjnie uruchamiać te wątki, mając nadzieję na zwiększenie szansy na uzyskanie „pierwszeństwa”. Szukam wszelkich pomysłów i ulepszeń, które wszyscy moglibyście pożyczyć. Dzięki.

Odpowiedzi:

2 dla odpowiedzi № 1

Czuję, że jesteś na dobrej drodze. Jednak gdzieś będzie limit, ile wątków powinieneś utworzyć. Może to być I / O na laptopie, sieciowe I / O lub twój serwer. Upewnij się, że w jakiś sposób ograniczysz liczbę wątków - może nawet parametr konfigurowalny.

W tym kontekście naprawdę nie musisz się martwić o priorytet wątku Java, ponieważ jest to priorytet żonglowania w JVM.