阅读背景:

两个线程分别打印 1- 100,A 打印偶数, B打印奇数。

来源:互联网 

1. 直接用CAS中的AtomicInteger

package concurency.chapter13;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * @auther draymonder
 */
public class PrintOddAndEven {
    public static volatile boolean flag = false;

    public static AtomicInteger num = new AtomicInteger();

    public static void main(String[] args) {
        new Thread(()->{
            while(num.get() < 100) {
                if(flag) {
                    System.out.println(Thread.currentThread() +  " " + num.getAndIncrement());
                    flag = false;
                }
            }

        }, "奇数").start();

        new Thread(()->{
            while(num.get() < 100) {
                if(!flag) {
                    System.out.println(Thread.currentThread() + " " + num.getAndIncrement());
                    flag = true;
                }
            }
        }, "偶数").start();
    }
}package concurency.c



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: