2008-05-07
并发2000个线程的CPU占用的问题
关键字: 多线程
在做个高并发的项目,发现个的情况向大家请教。
下面的代码很简单。就是开2000个线程,线程里就是个死循环,每次循环sleep 20 ms.
当 sleep 20 ms的时候,我的CPU占用10-50%左右。
可是当改为sleep 19或者21 ms的时候,CPU占用一直100%。
为啥?
下面的代码很简单。就是开2000个线程,线程里就是个死循环,每次循环sleep 20 ms.
当 sleep 20 ms的时候,我的CPU占用10-50%左右。
可是当改为sleep 19或者21 ms的时候,CPU占用一直100%。
为啥?
public static void main(String[] args) {
for (int i = 0; i < 2000; i++) {
new Thread() {
public void run() {
while (true) {
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
}
}
评论
cddcdd
2008-05-08
对我来说没什么多大差别
sleep 21 还是20的时候
差不多都占用了95 %以上
sleep 21 还是20的时候
差不多都占用了95 %以上
neora
2008-05-08
robbin 写道
我建议你在运行程序的同时用vmstat观测一下CPU的状态,特别是context switch和interrupts这两项,对比sleep 19和sleep 20两种情况下context switch和interrupts有没有很大的差别。
谢谢建议。我忘记说了。只有在Windows下发生,没法vmstat。
robbin
2008-05-08
我建议你在运行程序的同时用vmstat观测一下CPU的状态,特别是context switch和interrupts这两项,对比sleep 19和sleep 20两种情况下context switch和interrupts有没有很大的差别。
moses3017
2008-05-08
恩,我有这个关于多线程的困惑,期待解答ing
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 47492 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
自省十训
neora 写道 3、不写代码注释。   ...
-- by sunrie -
自省十训
andyhu1007 写道常用a a1 a2 b c d x y z 做变量名。 ...
-- by hunter001201 -
自省十训
常用a a1 a2 b c d x y z 做变量名。 - 编成经验 ...
-- by andyhu1007 -
自省十训
说的很不错.参考
-- by hunter001201 -
自省十训
黑体字是什么? 建议?还是评论?数字后面是什么? 不应该做的事吗?
-- by sg552






评论排行榜