Java两个线程交替打印奇数和偶数

今天看到这个面试题后满脑子想的都是必须得用加锁,通信才可以完成的。发现走了不少弯路。直接上代码,面试用。

package com.macro.mall.demo.test.thread.productconsumer;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * @author zxw
 * @version 1.0
 * @description 交替打印
 * @data: 2020/2/11 22:05
 */
public class Test {

    public static void main(String[] args) {
        //java一个包装类,保证是原子操作,并且线程安全
        AtomicInteger atomicInteger = new AtomicInteger(0);
        Thread thread = new Thread(() -> {
            while (atomicInteger.get() <= 100) {
                if (atomicInteger.get() % 2 == 0) {
                    System.out.println("偶数" + atomicInteger.get());
                    //进行++的操作
                    atomicInteger.incrementAndGet();
                }
            }
        });

        Thread thread2 = new Thread(() -> {
            while (atomicInteger.get() <= 100) {
                if (atomicInteger.get() % 2 == 1) {
                    System.out.println("奇数" + atomicInteger.get());
                    atomicInteger.incrementAndGet();
                }
            }
        });
        thread.start();
        thread2.start();
    }
}

你可能感兴趣的:(Java面试)