62,614
社区成员
发帖
与我相关
我的任务
分享
class PingPong3 extends Thread{
public static void main(){
AtomicInteger i = new AtomicInteger(0);
int end = 40;
int total = 5;
for(int k=0; k<total; k++) {
new PingPong3("t"+(k+1), i, k, total, end).start();
}
}
AtomicInteger i;
int end;
int total;
int order;
String name;
PingPong3(String name, AtomicInteger i, int order, int total, int end){
this.name = name;
this.order = order;
this.i = i;
this.end = end;
this.total = total;
}
@Override
public void run() {//会越界打印出40和41
while (i.get() < end) {
synchronized(i){
if (i.get() % total == order) {
System.out.println(name + ":" + i.getAndIncrement());
}
}
}
System.out.println(name+": exit");
}
}
t1:0
t2:1
t3:2
t4:3
t5:4
t1:5
t2:6
t3:7
t4:8
t5:9
t1:10
t2:11
t3:12
t4:13
t5:14
t1:15
t2:16
t3:17
t4:18
t5:19
t1:20
t2:21
t3:22
t4:23
t5:24
t1:25
t2:26
t3:27
t4:28
t5:29
t1:30
t2:31
t3:32
t4:33
t5:34
t1:35
t2:36
t3:37
t4:38
t5:39
t1:40
t4: exit
t2:41
t5: exit
t1: exit
t2: exit
t3:42
t3: exit