您的位置:首页 > 编程语言 > Java开发

Java使用volatile实现多线程输出ABC共10次

2018-02-05 20:27 344 查看

问题

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

今天在写多线程的时候找例子,见到了这样一个题,觉得不难,但是在网上没有看见用volatile实现的,于是自己写一下记录下来。

代码

public class Main {

public static void main(String[] args) throws InterruptedException {
// write your code here
for (int i = 0; i < Test.ARRAY.length; i++) {
new Test.OutputThread(i).start();
}
}
}

class Test {

public static final String[] ARRAY = {"A", "B", "C"};

private static volatile int index = 0;
private static volatile int count = 0;

static class OutputThread extends Thread {
int num;

OutputThread(final int num) {
this.num = num;
}

@Override
public void run() {
while (count < 10) { //更改输出ABC的次数
if (index != num) {
continue;
}
System.out.print(ARRAY[index]);
count += (index + 1) / ARRAY.length; //这里可以换成if判断后+1
index = (index + 1) % ARRAY.length;
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: