/ / Capire i thread in java-java, multithreading

Capire i thread in java-java, multithreading

Sono abbastanza nuovo per i concetti di thread in JAVAe anche se ho provato un paio di codici e stanno lavorando, non capisco esattamente cosa sta accadendo in background, ad esempio ho scritto questo pezzo di codice:

public class myThreadTest implements Runnable {
private static void ping(String text, int count)
throws InterruptedException {
for (int i = 0; i<count; i++) {
System.out.println("ping "+text+i+"...");
Thread.sleep(1000);
}
}
public void run() {
try {
ping("run ",10);
} catch (InterruptedException e) {
}
}
public static void main(String[] args) {
(new Thread(new myThreadTest())).start();
try {
ping("main ", 5);
} catch (InterruptedException e) {
}
}
}

ci sono 2 thread in esecuzione qui uno eseguito da main e l'altro dal metodo eseguito? Bcoz l'output che ottengo è main, run, main, run, run, main ... qualcosa del genere.

risposte:

3 per risposta № 1

Sì, entrambi eseguono contemporaneamente.

Un thread è un thread di esecuzione in un programma. Java Virtual Machine consente a un'applicazione di avere più thread di esecuzione in esecuzione contemporaneamente.

Sto altamente raccomandando questo documenti prima inizia a scrivere. Buona fortuna


2 per risposta № 2

I thread in java hanno principalmente a che fare con la concorrenza, che è la nozione di cose multiple che accadono contemporaneamente. Un thread è un percorso indipendente di esecuzione all'interno di un programma.

Dal tuo programma posso vedere che sta iniziando il tuo codicedue thread all'avvio eseguendo il primo comando il ciclo for che dorme per 1 secondo, quindi esegue il metodo run e avanti e indietro fino a quando il ciclo for non si esaurisce, quindi la corsa continua a 9


2 per risposta № 3

È corretto. Prova a stampare il ID thread nel tuo ping() metodo per vedere che thread diversi sono in esecuzione (puoi anche nominare i tuoi thread e io lo seguo come pratica, così posso capire quale thread sta facendo cosa)


0 per risposta № 4

Ci sono due thread. Uno dei thread viene creato e inizia ad eseguirne il relativo run metodo asincrono a causa del start chiama nel blocco principale. L'altro thread sta eseguendo il main metodo stesso.