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; } } } }
相关文章推荐
- 使用Java 多线程编程 让三个线程轮流输出ABC,循环10次后结束
- Java实现多线程经典问题:使用三个线程实现输出ABCABC循环
- Java多线程:用三个线程控制循环输出10次ABC
- Java多线程:用三个线程控制循环输出10次ABC
- Java多线程:用三个线程控制循环输出10次ABC
- java多线程---顺序打印ABC的三种实现---volatile方式
- Java多线程:用三个线程控制循环输出10次ABC
- Java多线程之使用volatile优雅地实现单例
- Java多线程中Volatile的使用
- 初学Java多线程:慎重使用volatile关键字
- Java多线程:什么时候使用哪种实现方式
- java多线程-慎重使用volatile关键字
- 使用java实现http多线程断点下载文件(二)
- Java中使用RandomAccessFile类实现多线程下载
- Java多线程之~~~使用CountDownLatch来同步多个线程实现一个任务
- Java中使用Timer和TimerTask实现多线程
- java多线程实现每隔500毫秒输出一个数字
- java使用volatile以及双重检查加锁优化单例在多线程下的性能
- Java 基础小知识一: 使用ResourceBundle 和 MessageFormat 实现国际化信息输出
- JAVA多线程:什么时候使用哪种实现方式