美文网首页
多线程先输出2再输出1

多线程先输出2再输出1

作者: YAOPRINCESS | 来源:发表于2020-09-16 11:01 被阅读0次

wait/notify

package com.kang.multithread;

/**
 * @author klr
 * @create 2020-09-16-10:53
 */
public class Print21 {

    static final Object lock = new Object();
    static boolean con = false;

    public static void main(String[] args) {
        new Thread(()->{
            synchronized (lock) {
                while (!con) {
                    try {
                        lock.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                System.out.println(1);
            }

        },"t1").start();

        new Thread(()->{
            synchronized (lock) {
                System.out.println(2);
                con = true;
                lock.notify();
            }
        },"t2").start();
    }
}

park/unpark

package com.kang.multithread;

import java.util.concurrent.locks.LockSupport;

/**
 * @author klr
 * @create 2020-09-16-10:53
 */
public class Print21 {

    static final Object lock = new Object();
    static boolean con = false;

    public static void main(String[] args) {
        Thread t1 = new Thread(() -> {
//            synchronized (lock) {
//                while (!con) {
//                    try {
//                        lock.wait();
//                    } catch (InterruptedException e) {
//                        e.printStackTrace();
//                    }
//                }
            LockSupport.park();
            System.out.println(1);
//            }

        }, "t1");
        t1.start();

        new Thread(()->{
//            synchronized (lock) {
//                System.out.println(2);
//                con = true;
//                lock.notify();
//            }
            System.out.println(2);
            LockSupport.unpark(t1);
        },"t2").start();
    }
}

相关文章

  • 多线程先输出2再输出1

    wait/notify park/unpark

  • NSCondition实现控制线程的执行顺序

    最终的输出是:先输出所有的1,然后再输出所有的2

  • swift中export与export default区别,简单

    export的使用 1.直接输出 2.先定义再输出 export default的使用 1.export defa...

  • 进阶-任务11

    题目1: 输出10 题目2 题目3 输出1,3,2定时器中的函数会被自动放到队尾执行,所以会先依顺序输出1和3,再...

  • javascript任务队列异步函数

    下面这段代码输出结果是? 为什么? 先输出1,再输出3,最后输出2解释 初始化运行时,主线程会去执行所有的同步任务...

  • 2/14 输出,输出,再输出

    今天弗兰克写作营的题目是:你学写作的目的是什么? 这个问题很有必要,因为我写作的目的就是为了学会有条理的输出。写作...

  • forEach、map、for..of、for..in、for循

    一、背景 二、问题 1、首先举个例子,执行test函数,要求先输出1、2、3、4、5,然后再输出“next” le...

  • 先输入再输出

    这段时间词穷没灵感,我想还是输入少了。本身双十一商场活动,我们也忙碌很多,经常加班加点,我个人最近销售也不好,感觉...

  • 先输入再输出

    关于写作这件事情,还是得先输入再输出,否则没有输入,输出也无法高质量,所以无论多忙,每天得坚持阅读,再忙也不能少于...

  • Java基础篇(二)

    1.数组的输出方式 先输入一个数组 然后再将数组输出 数组输出方式1 数组输出方式2 输出方式3 2.猜数字游戏 ...

网友评论

      本文标题:多线程先输出2再输出1

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