Molte istanze di applicazione o singola applicazione con molti thread?

0

Sto sviluppando un'applicazione Java che gestirà enormi file XML (fino a 300 MB ciascuno e centinaia di migliaia di linee). Sono raggruppati in genere con da 20 a 40 file XML simili che necessitano anche di elaborazione. Il lavoro sarà principalmente legato alla CPU, con qualche limite legato all'IO per aprire i file e salvare i risultati.

Mi stavo chiedendo cosa sarebbe stato meglio, come parlando per le prestazioni. Sarebbe meglio creare un'applicazione che potrei invocare attraverso uno script come questo:

java -jar myApp.jar huge_1.xml
java -jar myApp.jar huge_2.xml
java -jar myApp.jar huge_3.xml

o forse gestisci tutto in un'unica applicazione che creerà fino a N discussioni che potrebbero essere invocate in questo modo?

java -jar myApp.jar huge_1.xml huge_2.xml huge_3.xml

I file xml possono essere elaborati indipendentemente, il risultato finale verrà raggruppato in seguito per l'analisi.

In una visione a lungo termine, quale versione (se del caso) sarebbe di migliore utilizzo?

    
posta streppel 23.06.2016 - 04:41
fonte

2 risposte

2

Suggerirei Discussioni.

I thread sono "più leggeri" dei Processi completi e Java ha strumenti di gran lunga migliori per la gestione delle interazioni con / tra i thread di quanto non abbia per i processi.

BTW, se dovessi usare lo script come lo hai descritto, i tuoi processi avrebbero eseguito in sequenza , uno dopo l'altro. Avresti bisogno di un modo per dire al tuo sistema operativo di avviare il programma ma non aspettare che finisca, ripetilo per ogni processo di cui hai bisogno e quindi come rimettere insieme tutti questi processi, tutti nella lingua di scripting di scelta.

    
risposta data 23.06.2016 - 13:31
fonte
1

Credo che un approccio multithread sarebbe il migliore.

Hai anche pensato di utilizzare un mix dei due? Avvia un'applicazione (manager) responsabile della gestione dei file da elaborare e dei loro progressi, per elaborare ogni file in cui avvii l'applicazione di elaborazione generica in un processo separato, un po 'come i browser funzionano oggi. In questo modo ogni elaborazione è individuale e anche se si verifica un errore, gli arresti anomali che elaborano tutti gli altri sono sicuri.

    
risposta data 23.06.2016 - 05:59
fonte

Leggi altre domande sui tag