BONJOUR
Quelq'un pourrais t-il me montré un programme très très simple qui concerne le multitâche ( un programme en console ) ?
merci
BONJOUR
Quelq'un pourrais t-il me montré un programme très très simple qui concerne le multitâche ( un programme en console ) ?
merci
Pour jouer avec les threads il faut etendre la classe Thread et overrider la méthode run.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 public class Test extends Thread{ private int id; public Test(int pId){ id=pId; } public void run() { while(true){ System.out.println("id de la tache="+id); Thread.yield(); } } public static void main(String[] args) { new Test(1).start(); new Test(2).start(); new Test(3).start(); } }
Après tu instancies la classe et tu appelles la méthode start qui elle même appellera run
Ok j'ai compris le principe mais si par exemple
new Test(1).start(); // doit s'éxécuter toute les 2sec
new Test(2).start(); // doit s'éxécuter toute les 1sec
new Test(3).start(); // doit s'éxécuter toute les 5sec
la je ne sais pas comment faire
dans le run tu fais un
avec periode en millisecondes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 try { sleep(periode)} catch(InterruptedException e) {};
Nous allons fairenew Test(1).start(); // doit s'éxécuter toute les 2sec
new Test(2).start(); // doit s'éxécuter toute les 1sec
new Test(3).start(); // doit s'éxécuter toute les 5sec
new Test(1).start(); // doit s'éxécuter toute les 1sec
new Test(2).start(); // doit s'éxécuter toute les 2sec
new Test(3).start(); // doit s'éxécuter toute les 3sec
Tu doit le mettre de le while de runtry { sleep(periode)} catch(InterruptedException e) {};
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public void run() { while(true){ try { sleep((id*1000))} catch(InterruptedException e) {}; System.out.println("id de la tache="+id); Thread.yield(); } }
Par contre moi j'aurais une questions, dans ce cas ci , j'aimerais stoper chacune des tache lancé a chaque pression de la touche entrer.
donc:
1er pression de entrer
Test(1) ce stop,
2eme pression de entrer
Test(2) ce stop,
.........
MERCI
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 public class Test extends Thread{ private int id; private boolean stopped; public Test(int pId){ id=pId; } public void run() { while (!stopped) { try { sleep(id*1000); } catch (InterruptedException e) {}; System.out.println("id de la tache="+id); Thread.yield(); } } public void stop() { stopped = true; } public static void main(String[] args) { int[] pauses = {2, 1, 5}; Thread[] threads = new Thread[pauses.length]; for (int i = 0; i < threads.length; i++) { threads[i] = new Test(pauses[i]); threads[i].start(); } for (int i = 0; i < threads.length; i++) { // attente pression de la touche entrer ... threads[i].stop(); } }
Si le sujet est résolu, merci de le signaler en cliquant sur
Les Règles du Forum
Partager