首页 > 编程语言 > 详细

Java不使用锁让两个线程顺序打印1~100

时间:2020-09-03 11:12:53      阅读:105      评论:0      收藏:0      [点我收藏+]

两个线程,其中一个打印奇数,另一个打印偶数,打印的结果是按照顺序1~100,不使用锁。

import java.util.concurrent.atomic.AtomicInteger;

public class PrintOneToOneHundred {

    private static int num = 1;

    private static final AtomicInteger x = new AtomicInteger(0);

    // 打印奇数
    private static class PrintOdd extends Thread {
        @Override
        public void run() {
            while (true) {
                while (x.compareAndSet(0, 2)) {
                    int t = num++;
                    System.out.println(t);
                    x.compareAndSet(2, 1);
                    if (t == 99) return;
                }
            }
        }
    }

    // 打印偶数
    private static class PrintEven extends Thread {
        @Override
        public void run() {
            while (true) {
                while (x.compareAndSet(1, 3)) {
                    int t = num++;
                    System.out.println(t);
                    x.compareAndSet(3, 0);
                    if (t == 100) return;
                }
            }
        }
    }

    public static void main(String[] args) {
        new PrintOdd().start();
        new PrintEven().start();
    }

}

Java不使用锁让两个线程顺序打印1~100

原文:https://www.cnblogs.com/SanjiApollo/p/13606062.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!