Sync test

di il
2 risposte

Sync test


package MarcoTests;

/**
 * Created by Marco on 07/11/2018.
 */
public class Occupato implements Runnable {

    private Thread myThread;


    public Occupato(){
    myThread = new Thread(this,"processo interno");
    myThread.start();
    }

    @Override
    public synchronized void run() {
                
        for(int i = 0; i < 10; i++){
            System.out.println("primo: " + i);
            try {
                Thread.sleep(1000);
            } catch(InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    public synchronized void SecondoCounter(){
        for(int i = 0; i < 10; i++){
            System.out.println("secondo: " + i);
            try {
                Thread.sleep(1000);
            } catch(InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
    public static void main(String[] args) {	
        Occupato occupato = new Occupato();
        occupato.SecondoCounter();

    }
Perchè tra i due metodi parte prima il SecondoCounter?
Pensavo che prima intervenisse il costruttore, poi il Main.

2 Risposte

  • Re: Sync test

    A parte il thead principale che e' ovviamente, in esecuzione, lordine di partenza degli altri thread

    NON E' DEFINITO, E' ARBITRARIO, NESSUNO TI ASSICURA CHE SIA SEMPRE LO STESSO, NON E' SOTTO IL TUO CONTROLLO.

    La risposta alla tua domanda e': "perche' oggi gli girano cosi''

    Sai solo che PRIMA O POI partiranno, sempre se la tua applicazione non esce prima!
  • Re: Sync test

    migliorabile ha scritto:


    "perche' oggi gli girano cosi''
    Hahahaha

    Quindi... se faccio girare l'applicazione su di un altro OS potrei avere un altro risultato?
    Che figo!
Devi accedere o registrarti per scrivere nel forum
2 risposte