자바 에서 CountDownlatch 사용법 분석
1
import
java.util.concurrent.CountDownLatch;
2
import
java.util.concurrent.Executor;
3
import
java.util.concurrent.ExecutorService;
4
import
java.util.concurrent.Executors;
5
6
public
class
CountDownLatchDemo {
7
private
static
final
int
PLAYER_AMOUNT
=
5
;
8
public
CountDownLatchDemo() {
9
//
TODO Auto-generated constructor stub
10
}
11
/**
12
*
@param
args
13
*/
14
public
static
void
main(String[] args) {
15
//
TODO Auto-generated method stub
16
//
,CountDownLatch 1
17
CountDownLatch begin
=
new
CountDownLatch(
1
);
18
//
,
19
CountDownLatch end
=
new
CountDownLatch(PLAYER_AMOUNT);
20
Player[] plays
=
new
Player[PLAYER_AMOUNT];
21
22
for
(
int
i
=
0
;i
<
PLAYER_AMOUNT;i
++
)
23
plays[i]
=
new
Player(i
+
1
,begin,end);
24
25
//
, 5
26
ExecutorService exe
=
Executors.newFixedThreadPool(PLAYER_AMOUNT);
27
for
(Player p:plays)
28
exe.execute(p);
//
29
System.out.println(
"
Race begins!
"
);
30
begin.countDown();
31
try
{
32
end.wait();
//
end 0,
33
}
catch
(InterruptedException e) {
34
//
TODO: handle exception
35
e.printStackTrace();
36
}
finally
{
37
System.out.println(
"
Race ends!
"
);
38
}
39
exe.shutdown();
40
}
41
}
다음은 플레이어 클래스.
1
import
java.util.concurrent.CountDownLatch;
2
3
4
public
class
Player
implements
Runnable {
5
6
private
int
id;
7
private
CountDownLatch begin;
8
private
CountDownLatch end;
9
public
Player(
int
i, CountDownLatch begin, CountDownLatch end) {
10
//
TODO Auto-generated constructor stub
11
super
();
12
this
.id
=
i;
13
this
.begin
=
begin;
14
this
.end
=
end;
15
}
16
17
@Override
18
public
void
run() {
19
//
TODO Auto-generated method stub
20
try
{
21
begin.await();
//
begin 0
22
Thread.sleep((
long
)(Math.random()
*
100
));
//
,
23
System.out.println(
"
Play
"
+
id
+
"
arrived.
"
);
24
}
catch
(InterruptedException e) {
25
//
TODO: handle exception
26
e.printStackTrace();
27
}
finally
{
28
end.countDown();
//
end 1, 0
29
}
30
}
31
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.