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

为什么Thread.sleep(200000)不等待我的脚本等待这么长时间?)

Thread.sleep(200000)不等待脚本等待这么长时间的原因是因为Thread.sleep()方法是Java中的一个线程休眠方法,它会使当前线程暂停执行指定的时间(以毫秒为单位)。但是,它并不是一个精确的等待方法,它只是告诉线程暂停执行一段时间,然后再继续执行。

在这个特定的例子中,Thread.sleep(200000)表示当前线程将暂停执行200000毫秒(即200秒)。然而,实际上,线程可能会在指定的时间之前被唤醒,这取决于操作系统和其他线程的调度。

因此,如果你希望脚本等待确切的时间,可以考虑使用其他方法,例如使用定时器或等待条件满足。这样可以更精确地控制脚本的等待时间。

另外,需要注意的是,Thread.sleep()方法是Java中的一个线程控制方法,与云计算领域的专业知识和相关产品没有直接关联。在云计算领域中,可以使用云服务提供商的相关产品和功能来实现任务的调度和控制,例如使用云函数、容器服务、批处理等。具体的产品和功能选择可以根据实际需求和场景进行评估和选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

多线程中join()方法,你真的了解吗?

为什么会突然想到这么一个方法,好像大家工作中不怎么常用,但是在平时面试中只要涉及到多线程中,大多情况下都会问到这个方法,我们也只是简单看看面试题说个大概,但是真正用法大家可能跟我之前一样是比较模糊...2、join()方法 大白话:就是谁调用这个方法,就让调用此方法线程进入阻塞状态,等待我执行完毕之后,再往下执行; 那么我们再来看上面那段加了join()代码,首先开启线程A,紧接着线程A调用了join...,进行处理,然后统一返回给前台,这里面要注意就是,我们必须等待前面的线程都执行结束,才能返回给前端,那么join()方法就很适合我们需求。...3、注意,join()位置可不是乱写 为什么说join()位置不能乱写,我们来看两端代码 public static void main(String[] args) throws Exception...,但是影响是非常大,改了位置之后这段代码就变成了了这个意思,t1线程开启,紧接着t1调用了join()方法,那么就必须等待t1执行完毕之后再执行t2,所以此时多线程代码,其实已经变成了单线程,我们来看下两段代码执行结果

52710

Tomcat性能优化,学会薪水翻倍

ConnectionTimeout 是一种处理超时机制,可以理解为是tomcat自我保护机制 如果说这个请求长时间处理没有结束,Tomcat会认为这个请求处理超时 一般来说会根据项目的业务指标去调整...; i++) { new Random().nextInt(); } // 50毫秒数据库等待,线程不干活 Thread.sleep(50L); return...; i++) { new Random().nextInt(); } // 50毫秒数据库等待,线程不干活 Thread.sleep...为什么会连接超时,默认不是20秒吗,这个接口怎么会执行了20秒 接着往下看,用表格查看结果 ? 发现错误请求确实是因为超过了20秒导致连接超时 为什么会超过20秒?我们看下正常请求是多少 ?...; i++) { new Random().nextInt(); } // 50毫秒数据库等待,线程不干活 Thread.sleep(50L); return "Success

92230
  • C#线程篇---解答线程之惑(2)

    前一篇,讲述了线程基础,给大家铺垫了一个基础,这一篇着重介绍线程作用及其工作方式,顺便小试牛刀一把。 现在我想提出,最直接问题是: 为什么要使用线程?   为什么要使用线程?...(线程池线程始终是后台线程,如果CLR要终止进程,它们就可能无法被迫完成任务) 一个计算限制任务需要长时间运行,就像例子中StartCode(),它执行就是计算限制任务。...为长时间运行任务创建一个专业线程,用于避免这个问题。 任务线程可能调用Abort()(属于Thread)来提前终止它。...; } } 这段可运行代码就是默认模式,执行前台代码。它输出也是你能预测: ? 在“开始执行子线程...”时候,需要等待10秒。...去掉第6行注释,再看看运行结果: ? 它不会等待,并看不到“子线程执行完毕”这句话。 前台好处是,你可以保证你后台线程能执行完毕,后台线程好处是,你不用管它执行。

    90860

    Java进阶(三)多线程开发关键技术

    本文转发自技术世界,原文链接 http://www.jasongj.com/java/multi_thread/ sleep和wait到底什么区别 其实这个问题应该这么问——sleep和wait有什么相同点...若锁当前不可用,则等待相应时间(由该方法两个参数决定):1)若该时间内锁可用,则获得锁,并返回true;2)若等待期间当前线程被打断,则抛出InterruptedException;3)若等待时间结束仍未获得锁...nanosTimeout指定该方法等待信号最大时间(单位为纳秒)。...调用该方法后,结束等待唯一方法是其它线程调用该条件对象signal()或signalALL()方法。等待过程中如果当前线程被中断,该方法仍然会继续等待,同时保留该线程中断状态。...调用条件等待注意事项 调用上述任意条件等待方法前提都是当前线程已经获得与该条件对象对应重入锁。 调用条件等待后,当前线程让出CPU资源。

    912180

    这样在 C# 使用 LongRunningTask 是错

    这样其实是错误 有的时候,你可能会这么写: Task.Factory.StartNew(async () => { while (true) { // do something...为什么需要 LongRunning 我们通常两种情况下会想到使用 TaskCreationOptions.LongRunning 参数: 你任务需要长时间运行,比如一个循环,或者一个死循环。...因为我们可能学习到了,Task 默认 Scheduler 是 ThreadPool,而 ThreadPool 线程是有限,如果你任务需要长时间运行,或者是需要占用大量 CPU 资源,那么就会导致...也就是说,我们任务在 3 秒后就已经执行完了,而不是我们想要长时间运行。 究其原因,是因为我们采用了异步方式来执行任务。而异步任务执行,是通过 ThreadPool 来执行。...我就是一个死循环,里面也是异步怎么办 那么你可以考虑让这个 LongRuning Task,不要 await,而是通过 Wait() 来等待

    42810

    Java进阶(三)多线程开发关键技术

    sleep和wait到底什么区别 其实这个问题应该这么问——sleep和wait有什么相同点。因为这两个方法除了都能让当前线程暂停执行完,几乎没有其它相同点。...若锁当前不可用,则等待相应时间(由该方法两个参数决定):1)若该时间内锁可用,则获得锁,并返回true;2)若等待期间当前线程被打断,则抛出InterruptedException;3)若等待时间结束仍未获得锁...nanosTimeout指定该方法等待信号最大时间(单位为纳秒)。...调用该方法后,结束等待唯一方法是其它线程调用该条件对象signal()或signalALL()方法。等待过程中如果当前线程被中断,该方法仍然会继续等待,同时保留该线程中断状态。...调用条件等待注意事项 调用上述任意条件等待方法前提都是当前线程已经获得与该条件对象对应重入锁。 调用条件等待后,当前线程让出CPU资源。

    41940

    这样在 C# 使用 LongRunnigTask 是错

    这样其实是错误有的时候,你可能会这么写:Task.Factory.StartNew(async () =>{ while (true) { // do something...为什么需要 LongRunning我们通常两种情况下会想到使用 TaskCreationOptions.LongRunning 参数:你任务需要长时间运行,比如一个循环,或者一个死循环。...因为我们可能学习到了,Task 默认 Scheduler 是 ThreadPool,而 ThreadPool 线程是有限,如果你任务需要长时间运行,或者是需要占用大量 CPU 资源,那么就会导致...也就是说,我们任务在 3 秒后就已经执行完了,而不是我们想要长时间运行。究其原因,是因为我们采用了异步方式来执行任务。而异步任务执行,是通过 ThreadPool 来执行。...我就是一个死循环,里面也是异步怎么办那么你可以考虑让这个 LongRuning Task,不要 await,而是通过 Wait() 来等待

    76640

    Selenium等待:sleep、隐式、显式和Fluent

    Selenium提供多种等待,根据某些条件在脚本执行相应等待,从而确保Selenium执行自动化测试时不会导致脚本失败。...Selenium等待 在使用Selenium执行自动化测试时,在编写Selenium脚本时,我们使用以下类型等待Thread.Sleep()方法 隐式等待 显式等待 Fluent等待 Thread.Sleep...使用Thread.Sleep()方法Selenium Webdriver等待指定时间,无论是否找到对应元素。如果在指定持续时间之前找到元素,脚本将仍然等待持续时间,从而增加了脚本执行时间。...如果花费时间超过了定义时间,脚本将抛出错误。这就是为什么使用Selenium处理动态元素,那么最好不要使用Thread.Sleep()。...如果在指定持续时间之前找到元素,将继续执行下一行代码,从而减少了脚本执行时间。这就是为什么隐式等待也称为动态等待原因。

    2.6K30

    【Java】已解决:`java.util.concurrent.BrokenBarrierException`

    每个线程在执行完部分任务后,会调用await()方法,等待其他线程到达同步点。...导致BrokenBarrierException原因可能有以下几种: 线程中断:当一个线程在等待屏障时被中断,CyclicBarrier会认为该线程未能按预期到达屏障,从而破坏屏障。...超时:如果一个线程在等待其他线程到达屏障时超过了指定时间限制,也会导致屏障被破坏。 异常终止:如果某个线程在调用await()之前发生异常而终止,其他线程在屏障处等待时,也会导致屏障被破坏。...线程数量不匹配:如果启动线程数量不等于CyclicBarrier初始化时指定数量,也会导致此异常。...避免长时间操作:在等待其他线程到达屏障时,避免执行可能耗时过长操作,减少发生超时可能性。

    8510

    Java并发学习之定时任务几种玩法

    定时任务创建几种方式 这里给出几种个人接触过定时任务使用方式(不全,仅供大家参考) 最简单一种:在线程中执行 Thread.sleep(),休眠挂起线程,等待一段时间后再执行 借助Timer和TimerTask...Thread#sleep方式 严格来讲,这种不太能够算入定时任务范畴,为什么这么说?...一般我们所说定时任务可以区分为两种,一种是到了某个点自动执行;另一种就是每隔多长时间执行一次 而这种线程Sleep方式,则是在运行后,强制使线程进入阻塞状态一段时间,然后再执行后续逻辑,一般使用流程是...// 提前业务逻辑 xxx try { Thread.sleep(1000); // 睡眠1s } catch(Exception e) { // .... } // 定时任务业务逻辑 /...提交线程池执行,支持按频率调度,支持延迟多长时间调度 4.

    1.7K100

    性能工具之Jmeter常用定时器

    其实这些知识百度一查就出来,为什么还要写,主要方便自己复习,要找时候就从自己文章中找出,而且这些自己通过自己调试后,直接可以拿出来用。...如果大于0,那么如果超过Timeout inmilliseconds中设置最大等待时间后还没达到设置线程数,Timer将不再等待,释放已到达线程。...参数说明: Reset Interpreter:每次迭代是否重置解析器,默认为false;在长时间运行脚本中建议设置为true。 Parameters:BeanShell脚本入参。...File Name:BeanShell脚本可以从脚本文件中读取。 Script:在Script区直接写BeanShell脚本。 简单写一demo增加一个sleep等待一分钟: ?...Target Throught:目标吞吐量 Throught Period:表示在多长时间内发送Target Throught指定请求数(以秒为单位) Test Druation:指定测试运行时间(以秒为单位

    1.3K10

    深入浅出解析JVM中Safepoint | 得物技术

    2.2  先给结论 由于VMThread某些操作需要STW,主线程在sleep结束前进入了JVM全局安全点,然后主线程要等待其他线程全部进入安全点,所以主线程被长时间没有进入安全点其他线程给阻塞了。...从代码变更记录看,22年9月份有人对这段代码换了一种写法:把for循环变量类型定义成long型,同时注释掉了循环内部Thread.sleep(0)代码,为什么可以这样写以及为什么要这样写这里先按下不表...到这里,也就知道为什么上面贴RocketMQ大那段代码,把循环索引值数据类型改成long型可以替换循环内部Thread.Sleep(0)达到放置安全点目的了。...#getIntVolatile 这个方法和Thread.sleep方法一样,也是一个native方法,为什么这里没有进入像Thread.sleep方法一样进入安全点?...我们一般这么理解 SafePoint,就是线程只有运行到了 SafePoint 位置,他一切状态信息,才是确定,也只有这个时候,才知道这个线程用了哪些内存,没有用哪些;并且,只有线程处于 SafePoint

    39710

    浅谈Await

    我们在使用时也就莫名其妙使用。往往不知道为什么不会导致线程堵塞。在这里,简单谈论下await一点原理。      ...在c#并行编程这本书中是这么介绍await:async方法在开始时以同步方式执行,在async方法内部,await关键字对它参数执行一个异步等待,它首先检查操作是否已经完成,如果完成,就继续运行(同步方式...(3000); } 可以看到只在子线程中添加了睡眠3秒代码,然后我们再次运行就会神奇发现,此时会先弹出"同步代码"这局话,然后等待3秒后窗体就不能被移动.看到这里我们就应该明白了为什么...这么一个方法,这个方法是干什么呢,我们先看下方法注释是怎么解释这个方法:" 尝试将延续任务封送回原始上下文,则为 true;否则为 false。" ...光看这段代码并看不出什么,然后我们再看这么一段话:"一个async方法是由多个同步执行程序块组成.每个同步程序块之间由await语句分隔.用await语句等待一个任务完成.当该方法在await处暂停时

    1.1K20

    哦,这就是java优雅停机?(实现及原理)

    而在平时工作中,我们不乏看到很多运维同学,是这么: kill -9 pid 如果这么干的话,jvm也无法了,kill -9 相当于一次系统宕机,系统断电。...); ThreadPoolExecutor 在 shutdown 之后会变成 SHUTDOWN 状态,无法接受新任务,随后等待正在执行任务执行完成。...shutdown() :启动顺序关闭,其中执行先前提交任务,但不接受新任务。如果已经关闭,则调用没有附加效果。此方法不等待先前提交任务完成执行。...shutdownNow():尝试停止所有正在执行任务,停止等待任务处理,并返回正在等待执行任务列表。当从此方法返回时,这些任务将从任务队列中耗尽(删除)。此方法不等待主动执行任务终止。...微服务:架构下静态数据通用缓存机制 微服务:小型系统如何“微服务”开发 微服务:深入理解为什么要设计幂等性服务 微服务:有赞服务化架构演进 面试必备:HashMap源码解析(JDK8) 缓存穿透:缓存雪崩解决方案分析

    1.2K50

    CountDownLatch和CyclicBarrier 傻傻分不清?超长精美图文又来了

    整个过程可以这么理解 ? 我们来查看 join() 实现源码: ?...很显然这种循环检查方式比较低效 除此之外,使用 join() 缺少很多灵活性,比如实际项目中很少让自己单独创建线程(原因在 我会手动创建线程,为什么要使用线程池?...小结 CountDownLatch 实现原理就是这么简单,了解了整个实现过程后,你也许发现了使用 CountDownLatch 一个问题: 计数器减 1 操作是一次性,也就是说当计数器减到 0,..., 可以看出,该方法入口使用了 ReentrantLock,这也就是为什么 Generation broken 变量没有被声明为 volatile 类型保持可见性,因为对其更改都是在锁内部,同样在锁内部对计数器...) 最后,再形象化比喻一下 CountDownLatch 主要用来解决一个线程等待多个线程场景,可以类比旅游团团长要等待所有游客到齐才能去下一个景点 而 CyclicBarrier 是一组线程之间相互等待

    46670

    线程篇3:

    1).每次执行结果都不一样 2).它们都大于100000且小于200000 ---- 3.3为什么 理论上两个线程,每个线程加100000次,一共应该200000才对 想象一下这个场景: 有两个神枪手对着靶子打...可想而知最后计数器上数应该是小于200000,所以代码中也类似 两个线程便是神枪手,run时候开始同时疯狂扫射,i便是靶子 ---- 3.4:i++发生了什么?...这时线程1进入,读出i值仍是9, 从而导致此次结束两个结果都是10,这就是为什么达不到200000原因 这就相当于两个神枪手同时开枪,靶子未及时反应而导致两颗同弹 4.怎么解决呢?...,由static修饰方法是不能用this对象 这就是为什么加一个static,锁就不同了原因,至于锁是什么,除了它老大还有人选吗?...访问一个对象instance同步方法:sleep3ms 同一个对象,需要等待释放,才能进入普通同步方法 ---- 2.两个线程访问两个对象普通同步方法 二-->3-->3.1中第一个小例子

    24930

    并发之魂--synchronized

    1).每次执行结果都不一样 2).它们都大于100000且小于200000 ---- 3.3为什么 理论上两个线程,每个线程加100000次,一共应该200000才对 想象一下这个场景:...可想而知最后计数器上数应该是小于200000,所以代码中也类似 两个线程便是神枪手,run时候开始同时疯狂扫射,i便是靶子 ---- 3.4:i++发生了什么?...这时线程1进入,读出i值仍是9, 从而导致此次结束两个结果都是10,这就是为什么达不到200000原因 这就相当于两个神枪手同时开枪,靶子未及时反应而导致两颗同弹 ?...,由static修饰方法是不能用this对象 这就是为什么加一个static,锁就不同了原因,至于锁是什么,除了它老大还有人选吗?...) ---- 4、缺陷: 效率低: 锁释放情况少(只能自动释放,或异常) 不能中断等待线程 不灵活: 加锁和释放锁时机单一,每个锁只有单一条件 无法知道释放成功获取锁 ---- 5.注意点

    58810

    面试官:线程是如何通讯

    为什么一个线程等待和通知机制就需要这么实现方式呢?别着急,咱们先来看实现,再来说原因。...一、wait/notify/notifyAll Object 类方法说明: wait():让当前线程处于等待状态,并释放当前拥有的锁; notify():随机唤醒等待该锁其他线程,重新获取锁,并执行后续流程...System.out.println("唤醒线程1"); LockSupport.unpark(t1); }, "线程2"); t2.start(); } 四、小结 为什么一个线程等待和唤醒功能需要这么实现呢...那问题来了,为什么还有会 Object wait 和 notify 方法呢?...因为 Object 类诞生比较早,也就是说 Condition 和 LockSupport 都是 JDK 后期版本才出现功能,所以就有了现在这么多线程唤醒和等待方法了。

    18020
    领券