首页
学习
活动
专区
工具
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,所以此时的多线程代码,其实已经变成了单线程,我们来看下两段代码的执行结果

54810

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

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

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

    91360

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

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

    917180

    这样在 C# 使用 LongRunningTask 是错的

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

    47810

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

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

    42140

    Javaee---多线程(一)

    ; Thread.sleep(1000); } } } 6.基于lambda表达式进行线程创建 lambda实际上是这个匿名内部类的一个简化的方式:本质上就是一个函数表达式...; Thread.sleep(1000); } } } 7.关于Thread的其他的使用方法 上面我们介绍两个: 1.直接调用无参数的,就是我们最开始介绍的...; 10.2使用系统里面的标志位 为什么会有下面的这个,因为上面的存在缺陷,就是我们需要手动创建,而且我们的线程如果正在休眠,我们把这个标志位修改掉,这个线程无法及时的做出回应,或者是叫做响应; 但是如果我们使用这个系统里面的标志位...; 11.线程等待join 下面的这个程序就是我们的t线程会休眠,我们的t.join就会让这个主线程等待我们的t线程,直到我们的t线程执行结束,主线程才会结束; 12.线程方法总结 动设置的标志位没有了效果...,我们的异常让这个标志位的效果失效了,接下来,线程可以自己决定接下来如何进行处理; 11.线程等待join 下面的这个程序就是我们的t线程会休眠,我们的t.join就会让这个主线程等待我们的t线程,直到我们的

    3900

    这样在 C# 使用 LongRunnigTask 是错的

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

    83640

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

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

    2.7K30

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

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

    10110

    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.4K10

    深入浅出解析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

    46510

    哦,这就是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 是一组线程之间的相互等待

    48070

    浅谈Await

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

    1.1K20

    线程篇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.注意点

    60210
    领券