Salve, ho un problema con un esercizio che proprio non riesco a risolvere. Devo garantire l'accesso ad un metodo a 3 thread per volta. Ho realizzato il metodo in modo che i thread in più vengano "bloccati" in un ciclo while. In questo modo:
Con questa realizzazione però il thread in più che viene "bloccato" nel ciclo spreca cpu inutilmente anche se non fa niente. Volevo trovare un modo per mettere in pausa il thread senza che spreca tempo di cpu.codice:private static int cont = 3; public void prova_a_entrare(int id) { while(cont==0) { } cont--; System.out.println("Il thread "+id+" è entrato"); Thread.sleep(5000); System.out.println("Il thread "+id+" sta uscendo"); cont++; }
Avevo inizialmente pensato ad un monitor con la parola chiave synchronized, ma il monitor fa entrare solo un thread alla volta, non riesco a trovare un modo per farne entrare 3 per volta.
Grazie a chi mi aiuta