看到一篇文章,说的是“多线程情况,如何循环输出ABC”,里面介绍了好几个方案,其中有一种是使用AtomicInteger原子性类去实现。
AtomicInteger方案,循环输出ABC
它的思路呢,是三个线程,同时去操作AtomicInteger类,然后对atomicInteger的值取膜操作,模的结果是0,输出“A”;膜的结果是1,输出“B”;膜的结果是2,输出“C”。
代码如下:
public class AtomicIntegerExample {
AtomicInteger ai = new AtomicInteger(0);
public static void main(String[] args) {
AtomicIntegerExample aie = new AtomicIntegerExample();
ExecutorService es = Executors.newFixedThreadPool(3);
es.execute(aie.new A());
es.execute(aie.new B());
es.execute(aie.new C());
es.shutdown();
}
class A implements Runnable {
private int index;
private String out;
@Override
public void run() {
while (ai.get() < 30) {
if (ai.get() % 3 == 0) {
System.out.println("A");
ai.getAndIncrement();
}