我是靠谱客的博主 无私板栗,最近开发中收集的这篇文章主要介绍Java多线程:用三个线程控制循环输出10次ABC,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目:有A,B,C三个线程, A线程输出A, B线程输出B, C线程输出C,要求, 同时启动三个线程, 按顺序输出ABC, 循环10次。

解题思路:要按顺序输出ABC, 循环10次,就要控制三个线程同步工作,也就是说要让三个线程轮流输出,直到10个ABC全部输出则结束线程。这里用一个Lock对象来控制三个线程的同步。用一个int型变量state标识由那个线程输出。

 

 1 package com.thread;
 2
 3 import java.util.concurrent.locks.Lock;
 4 import java.util.concurrent.locks.ReentrantLock;
 5
 6 public class ABC {
 7
private static int state = 0;
 8
 9
public static void main(String[] args) {
10
final Lock l = new ReentrantLock();
11
12
Thread A = new Thread(new Runnable(){
13 
@Override
14
public void run() {
15
while (state<=30) {
16 
l.lock();
17
if(state%3==0){
18
System.out.println("A");
19
state ++;
20 
}
21 
l.unlock();
22 
}
23 
}
24 
});
25
Thread B = new Thread(new Runnable(){
26 
@Override
27
public void run() {
28
while (state<=30) {
29 
l.lock();
30
if(state%3==1){
31
System.out.println("B");
32
state ++;
33 
}
34 
l.unlock();
35 
}
36 
}
37 
});
38
Thread C = new Thread(new Runnable(){
39 
@Override
40
public void run() {
41
while (state<=30) {
42 
l.lock();
43
if(state%3==2){
44
System.out.println("C");
45
state ++;
46 
}
47 
l.unlock();
48 
}
49 
}
50 
});
51 
A.start();
52 
B.start();
53 
C.start();
54 
}
55
56 }

运行结果:
A
B
C
A
B
C
A
B
C
A
B
C
A
B
C
A
B
C
A
B
C
A
B
C
A
B
C
A
B
C
A
B
C

 

转载于:https://www.cnblogs.com/liuling/p/2013-9-13-01.html

最后

以上就是无私板栗为你收集整理的Java多线程:用三个线程控制循环输出10次ABC的全部内容,希望文章能够帮你解决Java多线程:用三个线程控制循环输出10次ABC所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部