1

我有一个线程,它运行一个循环,在这个循环中它apache common http client用来创建到远程服务器的连接并从中获取一些数据,然后休眠一段时间。我的问题是如果网络很慢,CPU 是否可以启动choaking,因为GET方法将花费更长的时间来获取数据并因此返回。

4

3 回答 3

0

我不认为这会导致高 CPU 负载,但是您的线程可能会在 GET 期间阻塞很长时间,这可能会导致您的程序看起来很慢。如果网络很慢,GET 应该等待 IO,这通常不会占用大量 CPU。

于 2013-03-26T09:15:14.327 回答
0

网络是一个 I/O 操作,它通常由外围设备执行,因此 CPU 只是等待操作完成。操作系统阻塞线程执行,直到 I/O 操作完成。查看线程的生命周期,它有一个特殊的状态“阻塞 I/O”。

于 2013-03-26T09:15:40.777 回答
0

不,它不会卡住 CPU,但只会卡住应用程序(如果您有单独的网络线程,即使这也不会发生)

并且由于网络操作是 I/O 操作,所以它不使用 CPU。因此,在线程的阻塞持续时间内,CPU 时间不会分配给该阻塞线程。

于 2013-03-26T09:16:14.210 回答