创建新线程是否会阻止 CPU 将线程资源用于其他目的?
Does creating a new thread prevent the CPU from utilising the thread's resources for other purposes?
如果我创建一个线程来异步执行一个任务,并且在这个线程中我需要等待一些其他事件,调用 Thread.sleep() 1 秒和创建一个计时器对象之间有区别吗过一秒再回来查看等待这个事件? CPU 是否通过创建新线程来保留该线程不被使用?如果是这样,这两种实现之间有什么区别吗?还是 CPU 可以自由使用线程资源,直到定时器恢复运行?
编辑:
对于资源,我指的是缓存,但也指 cpu 本身作为资源的处理能力。当您在线程中等待计时器时,cpu 可以去做其他事情吗?我知道执行 thread.sleep 会暂停线程,但是如果线程中没有其他操作发生,那么 thread.sleep() 和在该线程中创建计时器之间有什么区别吗?操作系统在等待定时器时是将线程交给其他进程还是保留?
我的困惑是 Thread.Sleep() 并没有像我想象的那样阻塞。因此,我的问题可能很难理解。
我使用 Arduino 的经验是,当我调用 sleep 时,这会阻止所有执行。通常,创建一个计时器然后再 return 会好得多。在 Java 中,Thread.sleep() 与
不同
While(currentTime < (startTime + miliseconds) {
//do nothing
}
Thread.sleep() 允许 CPU 的核心继续执行其他操作。
创建一个新线程只是创建一个代码块,处理器将按照独立于当前执行线程的时间顺序执行该代码块。它不保留 CPU 中的任何内容。只有当 CPU 无法同时执行所有请求的线程时才会出现问题。
如果我创建一个线程来异步执行一个任务,并且在这个线程中我需要等待一些其他事件,调用 Thread.sleep() 1 秒和创建一个计时器对象之间有区别吗过一秒再回来查看等待这个事件? CPU 是否通过创建新线程来保留该线程不被使用?如果是这样,这两种实现之间有什么区别吗?还是 CPU 可以自由使用线程资源,直到定时器恢复运行?
编辑: 对于资源,我指的是缓存,但也指 cpu 本身作为资源的处理能力。当您在线程中等待计时器时,cpu 可以去做其他事情吗?我知道执行 thread.sleep 会暂停线程,但是如果线程中没有其他操作发生,那么 thread.sleep() 和在该线程中创建计时器之间有什么区别吗?操作系统在等待定时器时是将线程交给其他进程还是保留?
我的困惑是 Thread.Sleep() 并没有像我想象的那样阻塞。因此,我的问题可能很难理解。
我使用 Arduino 的经验是,当我调用 sleep 时,这会阻止所有执行。通常,创建一个计时器然后再 return 会好得多。在 Java 中,Thread.sleep() 与
不同While(currentTime < (startTime + miliseconds) {
//do nothing
}
Thread.sleep() 允许 CPU 的核心继续执行其他操作。
创建一个新线程只是创建一个代码块,处理器将按照独立于当前执行线程的时间顺序执行该代码块。它不保留 CPU 中的任何内容。只有当 CPU 无法同时执行所有请求的线程时才会出现问题。