bonjour,
j'ai voulu voire le fonctionement du "CountDownLatch". j'ai crée le test suivant:
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 import java.util.concurrent.CountDownLatch; public class TestLatch { private static CountDownLatch latch = new CountDownLatch(1); public static final class MonThread { public void go(){ latch.countDown(); System.out.println("On est apres le latch.countDown \n"); } } public static void main (String[] args){ System.out.println("1 \n"); Thread tGo = new ThreadGo(); System.out.println("2 \n"); tGo.start(); System.out.println("3 \n"); try { latch.wait(); // c'est la ligne 57 } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("4 \n"); } }
avec "ThreadGo" :
quand je lance le test, le résultat est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public class ThreadGo extends Thread{ MonThread mt =new MonThread(); public void run(){ mt.go(); } }
Je ne sait pas pourquoi il donne cette erreur??
1
2
3
On est apres le latch.countDown
Exception in thread "main" java.lang.IllegalMonitorStateException: current thread not owner
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Unknown Source)
at JarXYZ.TestIMS.TestLatch.main(TestLatch.java:57)![]()
can you help me?
Partager