Supposons que j'ai la classe suivante, comment puis-je forcer l'exécution successive des trois threads l'un après l'autre successivement? (En attente de l'autre pour être mis fin)Exécuter des threads en séquence
public class MyRunnable implements Runnable{
@Override
public void run() {
System.out.println("Thread 1 :First Thread started");
}
public static Runnable delay(){
Runnable r = new Runnable(){
@Override
public void run() { // running state
System.out.println("Thread 2: loading second thread..");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Thread 2: System loaded");
}
}; // finished state
return r;
}
public static Runnable waiting(){
Runnable r = new Runnable(){
@Override
public void run() { // running state
System.out.println("Thread 3: waiting..");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Thread 3: OK");
}
}; // finished state
return r;
}
public static void main(String[] args) throws InterruptedException{
Thread thread1 = new Thread(new MyRunnable());
Thread thread2 = new Thread(delay());
Thread thread3 = new Thread(waiting()); // (initial state)
thread1.start();
thread2.start();
thread3.start();
}
}
La question est pourquoi? Si vous voulez que les opérations se déroulent en séquence, vous n'avez pas besoin de threads, écrivez simplement les opérations les unes après les autres dans la même méthode. – RealSkeptic
En fait, il y a aussi des avantages révélés, je ne sais pas pourquoi ... Cochez cette réponse ---> https://stackoverflow.com/questions/30885037/multithreading-using-blocking-io-corrupts-file- in-java/30919133 # 30919133 @RealSkeptic –
@shekharsuman Quelque chose de plus sérieux est nécessaire comme preuve. Le code de référence réel, par exemple. Et un exemple simplifié qui peut être exécuté n'importe où. – RealSkeptic