创建新线程是否会阻止 CPU 将线程的资源用于其他目的?



如果我创建了一个线程来异步执行任务,并且在这个线程中我需要等待其他事件,那么调用thread.sleep()1秒和创建一个计时器对象来在一秒钟内检查以等待该事件之间有区别吗?CPU是否通过创建一个新线程来保留该线程?如果是这样的话,这两种实现之间有什么区别吗?或者CPU是否可以自由使用线程的资源,直到计时器恢复操作?

编辑:所谓资源,我指的是缓存,但也指cpu本身作为资源的处理能力。当你在线程中等待计时器时,cpu能去做其他事情吗?我知道执行thread.sleep会暂停线程,但如果线程中没有其他操作,那么thread.ssleep()和在该线程中创建计时器之间有什么区别吗?操作系统是在等待计时器时将线程提供给其他进程,还是保留线程?

我感到困惑的是Thread.Sleep()并没有像我想象的那样阻塞。因此,我的问题可能很难理解。

我对Arduino的经验是,当我调用sleep时,它会阻止所有执行。通常,最好是创建一个计时器,然后再返回。在Java中,Thread.sleep()与不同

While(currentTime < (startTime + miliseconds) {
//do nothing
}

Thread.sleep()允许CPU的核心继续执行其他操作。

创建一个新线程只会创建一个代码块,处理器将按时间顺序执行该代码块,该代码块独立于当前执行线程。它不从CPU中保留任何内容。只有当CPU无法同时执行所有请求的线程时,才会出现问题。

最新更新