You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Runnable的run()方法是否每次执行都会创建新线程?

问题解答

结论

你的理解完全正确,wrapper.getTask().run()不会创建额外线程,所有duration为0的即时任务都会在调用GET()方法的当前线程中实时同步执行,不会产生额外的线程开销,不会导致运行负载异常升高。

原理说明

  • Runnable接口的run()本身只是普通的方法定义,直接调用run()和调用普通自定义类的成员方法没有任何区别,代码会在当前调用线程上下文中串行执行,完全不会涉及线程创建逻辑。
  • 只有将Runnable实例交给Thread.start()、线程池的submit/schedule等方法时,才会由JVM或者线程池负责创建新线程(或复用池化线程)执行任务逻辑,你代码中只有异步延迟任务会走这个分支。

补充注意点

你当前的实现还有两个特点可以留意:

  • 所有通过addSync添加的任务会严格按照添加顺序串行执行,前一个同步任务执行完成后才会执行下一个任务,也才会继续提交后续的异步任务
  • 你调用的ThreadPoolManager.scheduleEvent只要是标准的线程池调度实现,本身也不会每次调用都创建新线程,而是复用线程池内的存活线程,本身也不会有频繁创建线程的开销

内容的提问来源于stack exchange,提问作者Girls are beautiful

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 05:06:01