zoukankan      html  css  js  c++  java
  • Java不使用锁让两个线程顺序打印1~100

    两个线程,其中一个打印奇数,另一个打印偶数,打印的结果是按照顺序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();
        }
    
    }
    
    -------------------------------------
    吾生也有涯,而知也无涯。
  • 相关阅读:
    贪心算法
    分治法
    递归法
    查找二 树与图的搜索
    (转载)查找三 哈希表的查找
    (转载)查找一 线性表的查找
    4.写出完整版的strcpy函数
    3.strcpy使用注意(3)
    2.strcpy使用注意(2)
    1.strcpy使用注意
  • 原文地址:https://www.cnblogs.com/SanjiApollo/p/13606062.html
Copyright © 2011-2022 走看看