Non capisco la differenza tra l'avvio e l'esecuzione di una discussione, ho testato entrambi i metodi e hanno prodotto lo stesso risultato, prima ho usato una combinazione di run() e avvio sullo stesso filetto e hanno fatto la stessa funzione come segue:Differenza tra l'esecuzione e l'avvio di una discussione
public class TestRunAndStart implements Runnable {
public void run() {
System.out.println("running");
}
public static void main(String[] args) {
Thread t = new Thread(new TestRunAndStart());
t.run();
t.run();
t.start();
}
}
l'output è:
running
running
running
poi ho visto javadoc del metodo run() dicono che: If this thread was constructed using a separate Runnable run object, then that Runnable object's run method is called; otherwise, this method does nothing and returns
così ho cercato di utilizzare il metodo run() senza un eseguibile separato come segue:
public class TestRun extends Thread {
public void run(){
System.out.println("Running Normal Thread");
}
public static void main(String[]args){
TestRun TR=new TestRun();
TR.run();
}
}
ed esegue anche il metodo run() e stampa Running Normal Thread
anche se è costruito senza un eseguibile separato! quindi qual è la differenza principale tra i due metodi
non è un duplicato! – naXa
Tuttavia è troppo tardi. Ma potrebbe essere utile per gli altri. Sostituire l'istruzione SOP del metodo di esecuzione con "System.out.println ("thread in esecuzione ..." + Thread.currentThread(). getName()); "e quindi esegue il programma. Vedrai la differenza. L'output è" thread in esecuzione ... main thread in esecuzione ... main thread in esecuzione ... Thread-0 " – user320676