Bonjour,
J'ai un Thread qui lance la methode run(), lorsque je veux mettre en pause ce qui s'execute dans methode run(), je fais un wait(1000) en dehors du run() mais ca met pas en pause, mais si je fait le wait a l'interieur de la methode run() sa fonctionne.
je voudrais controller le pause a l'exetrieur de la methode run() (pas de test dedans) ce qui ma mener a penser a recuperer le thread correspondant mais j'arrive pas malheuresment.
voici la partie du code :
Merci pour votre aide.
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 public void run() { int i = 0; while (true) { try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("le compteur est = " + i); i++; } } } public void pause() throws InterruptedException { synchronized (this) { this.wait(5000); System.out.println("le thread est en pause"); } } public void resume() { synchronized (this) { this.notifyAll(); } } public static void main(String[] args) throws InterruptedException { TestThread test = new TestThread(); Thread th = new Thread(test); th.start(); Thread.sleep(3000); // 1er test test.pause(); test.resume(); // 2eme test synchronized (th) { th.wait(5000); System.out.println("le thread est en pause"); } synchronized (th) { th.resume(); System.out.println("le thread a repris"); }
Partager