多线程 循环输出ABC AtomicInteger和Semaphore方案

  看到一篇文章,说的是“多线程情况,如何循环输出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();
                }
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值