首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

让线程顺序执行 8 种方法

一.前言 本文使用了8种方法实现在多线程中让线程顺序运行的方法,涉及到多线程中许多常用的方法,不止为了知道如何让线程顺序运行,更是让读者对多线程的使用有更深刻的了解。...package com.wwj.javabase.thread.order; /** * @author wwj * 通过子程序join使线程顺序执行 */ public class ThreadJoinDemo...package com.wwj.javabase.thread.order; /** * @author wwj * 通过主程序join使线程顺序执行 */ public class ThreadMainJoinDemo...System.out.println("开发人员来上班了..."); thread2.start(); } } 运行结果 早上: 7.使用CyclicBarrier(回环栅栏)实现线程顺序运行...System.out.println("开发人员来上班了..."); thread2.start(); } } 运行结果 早上: 8.使用Sephmore(信号量)实现线程顺序运行

2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    让线程顺序执行8种方法

    package com.wwj.javabase.thread.order; /** * @author wwj * 通过子程序join使线程顺序执行 */ public class ThreadJoinDemo...package com.wwj.javabase.thread.order; /** * @author wwj * 通过主程序join使线程顺序执行 */ public class ThreadMainJoinDemo...产品经理规划新需求 开发人员开发新需求功能 测试人员测试新功能 7.使用CyclicBarrier(回环栅栏)实现线程顺序运行 CyclicBarrier(回环栅栏):通过它可以实现让一组线程等待至某个状态之后再全部同时执行...产品经理规划新需求 开发人员开发新需求功能 测试人员测试新功能 8.使用Sephmore(信号量)实现线程顺序运行 Sephmore(信号量):Semaphore是一个计数信号量,从概念上将,Semaphore...com.wwj.javabase.thread.order; import java.util.concurrent.Semaphore; /** * @author wwj * 使用Sephmore(信号量)实现线程顺序运行

    1K20

    面试官:说说Event Loop事件循环、微任务、宏任务

    为了解决这个问题,JS中出现了同步和异步。他们的本质区别是:一条流水线上各个流程的执行顺序不同。在讲JS任务执行机制前,先要了解一下什么是同步任务与异步任务。...同步任务:即主线程上的任务,按照顺序由上⾄下依次⾏,当前⼀个任务⾏完毕后,才能⾏下⼀个任务。异步任务:不进⼊主线程,⽽是进⼊任务队列的任务,执行完毕之后会产生一个回调函数,并且通知主线程。...其实是声明了⼀个promise,promise是同步代码,会顺序⾏打印async2函数里的4 ,只有.then⾥⾯的代码会加⼊微任务队列⾥,这⾥相当于⾏了async2()之后,再将后面的代码加⼊⼀个微任务队列中...为了解决这个问题,JS中出现了同步和异步。他们的本质区别是:一条流水线上各个流程的执行顺序不同。在讲JS任务执行机制前,先要了解一下什么是同步任务与异步任务。...同步任务:即主线程上的任务,按照顺序由上⾄下依次⾏,当前⼀个任务⾏完毕后,才能⾏下⼀个任务。异步任务:不进⼊主线程,⽽是进⼊任务队列的任务,执行完毕之后会产生一个回调函数,并且通知主线程。

    76240

    面试官:说说Event Loop事件循环、微任务、宏任务

    为了解决这个问题,JS中出现了同步和异步。他们的本质区别是:一条流水线上各个流程的执行顺序不同。在讲JS任务执行机制前,先要了解一下什么是同步任务与异步任务。...同步任务:即主线程上的任务,按照顺序由上⾄下依次⾏,当前⼀个任务⾏完毕后,才能⾏下⼀个任务。异步任务:不进⼊主线程,⽽是进⼊任务队列的任务,执行完毕之后会产生一个回调函数,并且通知主线程。...这种不断重复的执行机制,就叫做事件循环画了一张图来描述事件循环图片更多面试题解答参见 前端进阶面试题详细解答4.易错点(1). promise本身是一个同步的代码(只是容器),只有它后面调用的then()方法里面的回调才是微任务图片...执行Promise的then方法里的代码,打印63.微任务执行完毕后,最后执行定时器里的宏任务,打印2,3,4三.图片1.先执行主线程上的同步代码,打印12.执行第9行的函数,进⼊async1内部,async1...其实是声明了⼀个promise,promise是同步代码,会顺序⾏打印async2函数里的4 ,只有.then⾥⾯的代码会加⼊微任务队列⾥,这⾥相当于⾏了async2()之后,再将后面的代码加⼊⼀个微任务队列中

    2.4K31

    面试官:说说Event Loop事件循环、微任务、宏任务5

    为了解决这个问题,JS中出现了同步和异步。他们的本质区别是:一条流水线上各个流程的执行顺序不同。在讲JS任务执行机制前,先要了解一下什么是同步任务与异步任务。...同步任务:即主线程上的任务,按照顺序由上⾄下依次⾏,当前⼀个任务⾏完毕后,才能⾏下⼀个任务。异步任务:不进⼊主线程,⽽是进⼊任务队列的任务,执行完毕之后会产生一个回调函数,并且通知主线程。...重复步骤1以此反复直到清空所以宏任务,这种不断重复的执行机制,就叫做事件循环画了一张图来描述事件循环图片4.易错点(1). promise本身是一个同步的代码(只是容器),只有它后面调用的then()方法里面的回调才是微任务图片...执行Promise的then方法里的代码,打印63.微任务执行完毕后,最后执行定时器里的宏任务,打印2,3,4三.图片参考 前端进阶面试题详细解答1.先执行主线程上的同步代码,打印12.执行第9行的函数...,进⼊async1内部,async1其实是声明了⼀个promise,promise是同步代码,会顺序⾏打印async2函数里的4 ,只有.then⾥⾯的代码会加⼊微任务队列⾥,这⾥相当于⾏了async2

    78120

    说说Event Loop事件循环、微任务、宏任务

    为了解决这个问题,JS中出现了同步和异步。他们的本质区别是:一条流水线上各个流程的执行顺序不同。在讲JS任务执行机制前,先要了解一下什么是同步任务与异步任务。...同步任务:即主线程上的任务,按照顺序由上⾄下依次⾏,当前⼀个任务⾏完毕后,才能⾏下⼀个任务。异步任务:不进⼊主线程,⽽是进⼊任务队列的任务,执行完毕之后会产生一个回调函数,并且通知主线程。...重复步骤1以此反复直到清空所以宏任务,这种不断重复的执行机制,就叫做事件循环画了一张图来描述事件循环图片4.易错点(1). promise本身是一个同步的代码(只是容器),只有它后面调用的then()方法里面的回调才是微任务图片...执行Promise的then方法里的代码,打印63.微任务执行完毕后,最后执行定时器里的宏任务,打印2,3,4三.图片参考 前端进阶面试题详细解答1.先执行主线程上的同步代码,打印12.执行第9行的函数...,进⼊async1内部,async1其实是声明了⼀个promise,promise是同步代码,会顺序⾏打印async2函数里的4 ,只有.then⾥⾯的代码会加⼊微任务队列⾥,这⾥相当于⾏了async2

    72120

    面试官:说说Event Loop事件循环、微任务、宏任务_2023-02-28

    为了解决这个问题,JS中出现了同步和异步。他们的本质区别是:一条流水线上各个流程的执行顺序不同。在讲JS任务执行机制前,先要了解一下什么是同步任务与异步任务。...同步任务:即主线程上的任务,按照顺序由上⾄下依次⾏,当前⼀个任务⾏完毕后,才能⾏下⼀个任务。异步任务:不进⼊主线程,⽽是进⼊任务队列的任务,执行完毕之后会产生一个回调函数,并且通知主线程。...重复步骤1以此反复直到清空所以宏任务,这种不断重复的执行机制,就叫做事件循环画了一张图来描述事件循环图片4.易错点(1). promise本身是一个同步的代码(只是容器),只有它后面调用的then()方法里面的回调才是微任务图片...执行Promise的then方法里的代码,打印63.微任务执行完毕后,最后执行定时器里的宏任务,打印2,3,4三.图片参考 前端进阶面试题详细解答1.先执行主线程上的同步代码,打印12.执行第9行的函数...,进⼊async1内部,async1其实是声明了⼀个promise,promise是同步代码,会顺序⾏打印async2函数里的4 ,只有.then⾥⾯的代码会加⼊微任务队列⾥,这⾥相当于⾏了async2

    89410

    事件循环机制(Event Loop)

    JS中的Event Loop 众所周知 JS 是⻔⾮阻塞单线程语⾔,因为在最初 JS 就是为了和浏览器交 互⽽诞⽣的。...如果 JS 是⻔多线程的语⾔话,我们在多个线程中处理 DOM 就可能会发⽣问题(⼀个线程中新加节点,另⼀个线程中删除节点) JS⾏的过程中会产⽣⾏环境,这些⾏环境会被顺序的加⼊到⾏栈中。...⼀旦⾏栈为空, Event Loop 就会从 Task 队列中拿出需要⾏的代码并放⼊⾏栈中⾏,所以本 质上来说 JS 中的异步还是同步⾏为。...⼀个宏任务,接下来有异步代码 的话就先⾏微任务 所以正确的⼀次 Event loop 顺序是这样的 ⾏script主体代码,这属于宏任务 ⾏栈为空,查询是否有微任务需要⾏所有微任务...Node 的 Event loop 分为 6 个阶段(timer  I/O  idle, prepare  poll  check  close callbacks),它们会按照顺序反复运⾏。

    75110

    c语言的三种语句

    二、循环语句 1.while语句 2.for语句 3.do-while循环 三、goto语句 四.猜数字游戏 前言: 梳理一下三大结构且做一个实践 C语⾔是结构化的程且序设计语⾔,这⾥的结构指的是顺序结构...else printf("奇数/n"); } else { Printf("负数/n"); } return 0; } (3)Tip:悬空else问题 有的人又要问了:if后不加{}else后不加{}能行吗...if后不加{}else后不加{}能行吗?...判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则⾏循环语句,语句⾏完后再继续判断,是否进⾏下⼀次判断。...循环语句,如果不满⾜就跳 出循环; ⽽ do while 循环则是先直接进⼊循环体,⾏循环语句,然后再⾏ while 后的判断表达式,表 达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环。

    23910

    【C语言篇】操作符详解(下篇)

    一般更多采用算术右移 位操作符 位操作符有: & //位与 | //位或 ^ //位异或 ~ //位取反 注:他们的操作数必须是整数。...| 对应的二进制位,有1则为1,两个同时为0,才为0 位异或^ 对应的二进制位,相异为1,相同为0 位取反~ 对应二进制位,1变为0,0变为1 不能创建临时变量(第三个变量),实现两个整数的交换...结合性 如果两个运算符优先级相同,优先级没办法确定先计算哪个了,这时候就看结合性了,则根据运算符 是左结合,还是右结合,决定顺序。...⼤部分运算符是左结合(从左到右⾏),少数运算符是右结合(从右到左⾏),⽐如赋值运算符( = )。...运算符的优先级顺序很多,下⾯是运算符的优先级顺序(按照优先级从⾼到低排列)。

    7810

    Java中的类你了解多少(每日一练)

    类的加载流程   类的加载指的是将类的.class⽂件中的⼆进制数据读入到内存中,将其放在运行行时数据区的⽅方法区内,然后在堆区创建⼀个java.lang.Class对象,用来封装类在方法区内的数据结构...在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,⽽解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始。⽐如:动态绑定或晚期绑定。...注意:这里的⼏个阶段是顺序开始,⽽不是顺序进行或完成,因为这些阶段通常都是互相交叉地混合进行的,通常在⼀个阶段行的过程中调⽤或激活另一个阶段。 加载 加载主要指:查找并加载类的二进制数据。...准备阶段是正式为类变量分配内存并设置类变量初始值的阶段,这些内存都将在方法区中分配。...(Java Test),直接使用java.exe命令来运行某个主类 类的销毁 在如下几种情况下,Java虚拟机将结束⽣命周期 行了System.exit()方法 程序正常行结束 程序在行过程中遇到了了异常或错误

    17810

    最全面试宝典-我的春招总结

    &和&&都是逻辑运算符号,&& 又叫短路路运算符 &不不管前 面的条件是否正确,后 面都 行行 &&前 面条件正确时,才 行行后 面,不不正确时,就不不 行行js中与=的区别?...堆排序:把要排序的n 个数看作是 一棵顺序存储的 二叉树,调整它们的存储序号,使它成为 一个 小根堆,将堆顶元素输出,得到n个元素中最 小的元素。然后对剩下的n-1个元素同样的 方法递归。...9 JS对象,JS选择器 ?...TCP是 面向连接的,提供可靠的服务,提供超时重发,检验数据等功能,保证数据能顺序到达 目的地;UDP是 面向 无连接的,提供不不可靠的服务,不不能保证数据到达 目的地, 而且不不保证有序,但是传输速度快...4 Servlet,Filter,Listener的 行行顺序? Listener > Filter > Servlet httpClient技术相关: 1 httpClient实现 网络爬 虫?

    86130

    VS实用调试技巧

    调试最常使⽤的⼏个快捷键:     F9:创建断点和取消断点断点的作⽤是可以在程序的任意位置设置断点,打上断点就可以使得程序⾏到想要的位置暂停⾏,接下来我们就可以使⽤F10,F11这些快捷键,观察代码的...F11:逐语句,就是每次都⾏⼀条语句,但是这个快捷键可以使我们的⾏逻辑进⼊函数内部。...f10启用调试,或者【调试】->【开始调试】按钮启用调试,随后【调试】->【窗⼝】->【监视】,然后任意找一个窗口点开,如下:     点开后将打开的窗口放在右边,如图:     随后我们将要查看的变量输入进去...的和: 看到需求后发现需要求阶乘,并且将1到10的阶乘相加,所以第一步要求一个数的阶乘,假如有一个数n,它的阶乘就是从1顺序乘到n,这里我们可以使用for循环,顺序一个一个乘起来,代码如下: #include...,在Release版本的程序中,这个使⽤的顺序也是相反的,也就导致arr[12]和i不会重合,也就不会死循环,最多报一个越界访问的警告 注意:从这个例子看出来,有些代码会根据环境的不同而产生不同的结果,

    10710

    2019年大厂Android面试题

    重载时传入泛型不同的list,会有问题吗 泛型通配符的使用,存入本身类对象会出问题吗 同一对象的两个锁,分别执行wait和notify,代码执行顺序 本地广播可以跨进程接受吗 自己设计实现本地广播功能...a奇异 Handler的postDealy中的runnable何时添加 onSaveInstanceState调用的时机,其中系统保存了什么,与onRestore..是成对执行吗 SparseArray...commit和commitAllowStateLoss有何区别 LinkedHashMap实现原理(单链表还是双链表) HashMap扩容的具体操作 Handler源码,消息轮询会一直进行吗 自定义View...、重写 普通内部类和静态内部类的区别 非安卓方法实现线程之间通信 发生异常时,synchroized和lock的区别 jvm内存模型 AsyncTask一个对象可以重复执行吗 Handler源码 handler...的poistDealy源码 view的绘制流程 执行requestLayout时,draw方法行吗 java和js互调及优化 播放器编码解码 弹幕流的处理 如何做单元测试 编译时和运行时 okhttp

    3K20

    Intel CET缓解机制实战解读

    来看⼀个例⼦,假设程序中存在以下⼀段代码⽚段: 此时这⼀段正常的顺序⾏的三个指令是不存在 ret 指令的。...但是,如果稍加偏移⼀下解释代码的地址时,就会导致出现完全不⼀样的指令,如下图所示: 如果按照红框中的顺序解释这些指令的时候,那么将会产⽣⾮代码预期的结果,会出现原代码中未出现过的 ret 指令以及 call...在⾏间接跳转 call 时,如果 IBT 机制启⽤, CPU 会判断下⼀跳指令是否为 endbr32/64 ,若是,则正常⾏,若不是则触发 #CP 异常。...继续上图,当 call rdx 正常流程⾛时,后⼀条指令就是 foo 函数的 endbr64 指令,程序会正常⾏,如果此时攻击者篡改了 rdx 的值,将其指向 foo 中的 add rax, rbx...函数中的⼀⾏指令,并不为 endbr64 : ⾏到篡改地址后继续⾏,触发崩溃: 直接⾏时触发的 #CP 异常: 同样地,实际应⽤上也是可以证明⽬前来说 CET 中的 IBT 机制是能够有效缓解

    1.2K30
    领券