PLAYER.RUNNER ha scritto:
uno che è quello principale e gestisce l'interfaccia grafica dell'applicazione (cose leggere)
E quindi, ragionevolmente, "caricherà" relativamente poco la CPU. Se parliamo di interfaccia Swing il suo (unico) thread è il Event Dispatch Thread che fa certo dei lavori ma è basato su "eventi" e quindi raramente impegna veramente tanto la CPU.
PLAYER.RUNNER ha scritto:
l'altro che è sostanzialmente un ciclo infinito che cambia un grande numero di valori (qualche milione) in un array bidimensionale e riesce a fare questo processo circa 15-16 volte al secondo.
E quindi tecnicamente "caricherà" al massimo la capacità di un singolo core. Tieni inoltre presente che i thread NON utilizzano i core in modo fisso/esclusivo. Se hai un thread X che dura molti secondi, in un certo istante potrebbe usare il core 1, poco dopo il core 2, poi riprendere più avanti la esecuzione sul core 1, ecc... Questo DIPENDE dallo scheduler del S.O.
PLAYER.RUNNER ha scritto:
e quattro theads.
Hai detto prima due.
PLAYER.RUNNER ha scritto:
C'è un modo per eseguire quel processo più volte in meno tempo? Si può eventualmente creare un altro thread che faccia la stessa cosa in parallelo per accelerare?
Ripeto: multi-threading (escludendo dal calcolo il EDT, che comunque carica poco la CPU).
E se più thread devono accedere ad una stessa risorsa (es. un oggetto o array condiviso), allora DEVI aver ben chiare le questioni sulla concorrenza, sincronizzazione, visibilità delle modifiche tra thread e altro.