Scusate l'ignoranza ma io sapevo fosse il processore stesso a gestire tutti i core presenti in esso e la suddivisione delle istruzioni, ma ora sono un po confuso. Stiamo studiando i thread all'università e ho fatto una piccola classe per testare il funzionamento dei core del mio computer (ho 4 core, 8 thread).
Da come ha detto il professore, se avessimo provato a fare qualcosa del genere su un multicore, avremo visto i messaggi dai vari thread sovrapporsi di continuo... invece quello che ho notato io è che sul mio computer funziona con il normale time slicing: cioè un thread ha la possibilità di incrementare la sua variabile interna e stamparla a video circa 50 volte prima che sia tolto dalla cpu... ho capito male io oppure c'è qualcosa che non va?codice:package others; public class MulticoreTest{ public MulticoreTest(){ } private class Test implements Runnable{ private int num = 0; private boolean run = true; private int code = 0; private Thread t; public Test(int code){ this.code = code; } @Override public void run(){ while(true){ System.out.println(this.getClass().getSimpleName()+ code + " " + num++); } } public void start(){ t = new Thread(this); t.start(); } } public static void main(String args[]){ int n = 10; MulticoreTest x = new MulticoreTest(); Runnable threads[] = new Runnable[n]; for(int i = 0; i < n; i++){ threads[i] = x.new Test(i); ((Test) threads[i]).start(); } } }
![]()