首页
学习
活动
专区
工具
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(信号量)实现线程顺序运行

99220

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

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

74240

面试官:说说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

72820

面试官:说说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()之后,再将后面的代码加⼊⼀个微任务队列中

1.8K31

面试官:说说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

81610

说说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

68420

事件循环机制(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),它们会按照顺序反复运⾏。

69410

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

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

14510

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

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

81930

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 机制是能够有效缓解

98230

前端面试中小型公司都考些什么

⽤户浏览器接收到响应后解析⾏,混在其中的恶意代码也被⾏。恶意代码窃取⽤户数据并发送到攻击者的⽹站,或者冒充⽤户的⾏为,调⽤⽬标⽹站接⼝⾏攻击者指定的操作。...⽤户浏览器接收到响应后解析⾏,混在其中的恶意代码也被⾏。恶意代码窃取⽤户数据并发送到攻击者的⽹站,或者冒充⽤户的⾏为,调⽤⽬标⽹站接⼝⾏攻击者指定的操作。...⽤户浏览器接收到响应后解析⾏,前端 JavaScript 取出 URL 中的恶意代码并⾏。恶意代码窃取⽤户数据并发送到攻击者的⽹站,或者冒充⽤户的⾏为,调⽤⽬标⽹站接⼝⾏攻击者指定的操作。...参考:前端进阶面试题详细解答setTimeout(fn, 0)多久才执行,Event LoopsetTimeout 按照顺序放到队列里面,然后等待函数调用栈清空之后才开始执行,而这些操作进入队列的顺序,...(5)其他可以通过一些小的优化点来加快打包速度resolve.extensions:用来表明文件后缀列表,默认查找顺序是 ['.js', '.json'],如果你的导入文件没有添加后缀就会按照这个顺序查找文件

73830

阿里前端常见面试题总结

,然后等待函数调用栈清空之后才开始执行,而这些操作进入队列的顺序,则由设定的延迟时间来决定vue-routervue-router是vuex.js官方的路由管理器,它和vue.js的核心深度集成,让构建但页面应用变得易如反掌...防抖函数的应用场景:按钮提交场景:防⽌多次提交按钮,只⾏最后提交的⼀次服务端验证场景:表单验证需要服务端配合,只⾏⼀段连续的输⼊事件的最后⼀次,还有搜索联想词功能类似⽣存环境请⽤lodash.debounce...节流函数的适⽤场景:拖拽场景:固定时间内只⾏⼀次,防⽌超⾼频次触发位置变动缩放场景:监控浏览器resize动画场景:避免短时间内多次触发动画引起性能问题用过 TypeScript 吗?...F5、 Ctrl+F5 (强制刷新)、地址栏回车有什么区别?...用户 Ctrl+F5(强制刷新): 浏览器不仅会对本地文件过期,而且不会带上 If-Modifed-Since,If-None-Match,相当于之前从来没有请求过,返回结果是 200。

96910

字节前端经典面试题(附答案)_2023-02-28

同源政策主要限制了三个方面: 当前域下的 js 脚本不能够访问其他域下的 cookie、localStorage 和 indexDB。 当前域下的 js 脚本不能够操作访问操作其他域下的 DOM。...⽤户浏览器接收到响应后解析⾏,混在其中的恶意代码也被⾏。 恶意代码窃取⽤户数据并发送到攻击者的⽹站,或者冒充⽤户的⾏为,调⽤⽬标⽹站接⼝⾏攻击者指定的操作。...⽤户浏览器接收到响应后解析⾏,混在其中的恶意代码也被⾏。 恶意代码窃取⽤户数据并发送到攻击者的⽹站,或者冒充⽤户的⾏为,调⽤⽬标⽹站接⼝⾏攻击者指定的操作。...,但得不到其它资源,则释放已占有的资源(破坏不可剥夺条件) 资源有序分配法:系统给每类资源赋予一个编号,每一个进程编号递增的顺序请求资源,释放则相反(破坏环路等待条件) 代码输出结果 const async1...then和.catch期望参数是一个函数,这里传入的是一个数字,因此就会发生值渗透,将resolve(1)的值传到最后一个then,直接打印出1; 遇到第二个定时器,将其加入到微任务队列,执行微任务队列,顺序依次执行两个定时器

84550
领券