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();
        }
    
    }
    
    -------------------------------------
    吾生也有涯,而知也无涯。
  • 相关阅读:
    选择器高级,from提交方式
    java基础(5)
    java基础(4)
    java基础(3)
    java基础(2)
    java基础(1)
    数据库基础与ADO.NET和C#中的异常处理
    C#中字符串的常用方法
    Linux基本命令格式(3)
    面向对象第二章
  • 原文地址:https://www.cnblogs.com/SanjiApollo/p/13606062.html
Copyright © 2011-2022 走看看