Questo è un pezzo di codice in una questione pratica SCJP:Codici sullo stesso filo eseguite in ordine insolito
public class Threads2 implements Runnable {
public void run() {
System.out.println("run.");
throw new RuntimeException("Problem");
}
public static void main(String[] args) {
Thread t = new Thread(new Threads2());
t.start();
System.out.println("End of method.");
}
}
'stato in parte menzionato here.
Tuttavia, la mia domanda non è la domanda precedente. Mentre eseguo il programma su alcune macchine più volte, occasionalmente ottengo RuntimeException
prima di "eseguirlo" nell'output. Questo non ha senso per me, dal momento che queste righe di codice sono eseguite nello stesso thread, quindi avrebbe dovuto essere l'ordine inverso.
Qualcuno può spiegare perché succede?
_ "esegui" prima di RuntimeException nell'output. Suona bene –
Oops. Colpa mia. Modificato. – underlandian
Dipende dal sistema, credo. Quando viene scaricato System.out? – RobAu