美文网首页
Java不使用锁让两个线程顺序打印1~100

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

作者: flyjar | 来源:发表于2023-04-01 01:09 被阅读0次
/**
*compareAndSet是原子操作。内部是unsafe实现的
*atomicInteger的作用就是用来做乐观锁的
*/
private final AtomicInteger atomicInteger = new AtomicInteger(0);

    private Integer num = 0;

    @Test
    public void test3() {

     //打印奇数
        new Thread(() -> {

            while (true) {

                while (atomicInteger.compareAndSet(0, 1)) {

                    num++;

                    System.out.println(num);

                    atomicInteger.compareAndSet(1,2);

                    if (num == 99) return;

                }

            }


        }).start();

   //打印偶数
        new Thread(() -> {


            while (true) {

                while (atomicInteger.compareAndSet(2, 3)) {

                    num++;

                    System.out.println(num);

                    atomicInteger.compareAndSet(3,0);

                    if (num == 100) return;

                }

            }


        }).start();

    }

相关文章

  • iOS多线程面试题:两个线程交替打印

    之前遇到的面试题:如何用两个线程交替打印1-100的数字。 思路是使用信号量来控制两个线程的打印顺序。 代码如下:

  • 如何让两个线程交替打印数字

    问题 如何让两个线程交替打印1-100的数字?废话不多说,直接上代码: synchronized锁+AtomicI...

  • 可重入锁🔒的一点小事儿

    对于java的可重入锁借助下面这个例子进行一点说明 问题:启动两个线程,线程1依次打印1,2,3;线程2再依次打印...

  • [java]java经典问题之线程交替打印数字

    问题 给出两个线程,要求两个线程交替打印从1到100,例如:A线程打印1,B线程打印2,A线程打印3...依次类推...

  • iOS 面试题 3个线程顺序打印

    题目1: 3个线程顺序打印 0-100 采用 NSCondition 输出 题目2: 启动三个线程A,B,C,打印...

  • iOS重识

    1synchronized(互斥锁) 互斥锁,就是使用了线程同步技术,多条线程按顺序地执行任务 使用场景:多条线程...

  • java两个线程交替打印奇偶数

    引言 java面试中经常会遇到这个问题,如何用两个线程交替打印奇偶数。线程A打印1,线程B打印2,线程A打印3,线...

  • 3.Java多线程----线程通信

    前言 假如现在有两个线程,如何实现两个线程交替打印1---100 结果 当一个线程输入后,使用wait()方法将此...

  • JAVA并发如何让线程顺序执行

    方法一 利用Lock锁中的Condition等待/唤醒机制,让三个线程顺序打印1 ~ N个数值。 大致流程 方法二...

  • 多线程编程练习

    1. 写两个线程,其中一个线程打印1 ~ 52,另一个线程打印A ~ Z,打印顺序应该是12A34B56C ......

网友评论

      本文标题:Java不使用锁让两个线程顺序打印1~100

      本文链接:https://www.haomeiwen.com/subject/ucdkddtx.html