Ciao a tutti, sto studiando i thread in java e ho scoperto che la jvm utilizza uno scheduler fifo con priorità...questo significa che se ci sono 2 o più thread con la stessa priorità il thread in esecuzione può occupare la cpu finché non finisce privandola agli altri. Per ovviare a ciò esiste il metodo yeld() e fin qui mi sembrava chiaro...ho però fatto delle prove e ho scoperto che anche senza yeld() i thread si scambiano tra loro.
Ora, io pensavo che java fosse un'astrazione di una macchina e che quindi avesse il SUO scheduler con le SUE politiche viste sopra.
Anche se su windows ho uno scheduler a divisione di tempo ero convinto che il quanto di tempo si riferisse solo alla jvm, vista come unico processo, e che i thread all'interno avessero una politica propria...ora che ho visto che non è così chiedo:
1)E' la jvm a cambiare scheduler a seconda dell'implementazione per il dato sistema operativo (quindi in windows abbiamo una jvm round robin, in alcuni sistemi unix una jvm batch,ecc.)
2)Il sistema operativo vede i thread java ed è lui a intervenire indipendentemente dallo scheduler d java
Quale delle 2?Grazie a chi mi risponderà!![]()

Rispondi quotando
