在java编程时,经常会碰到多线程编程,那么到底我们什么时候应该使用多线程呢?
一高人如是说:
写道
多线程是提高cpu的利用率,只有当cpu空闲时间比较多情况下,才能体现出多线程的优势,linux下采用top命令,cpu(s)可以查看 x% id id是idle的缩写,空闲的意思,就是说空闲的cpu的比例,如果这个值比较高,采用多线程时,才更有效果。
top命令使用实例:
top - 17:04:19 up 1:56, 4 users, load average: 0.39, 0.40, 0.33
Tasks: 93 total, 4 running, 89 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.4%us, 5.2%sy, 0.0%ni, 82.2%id, 0.0%wa, 2.6%hi, 9.6%si, 0.0%st
Mem: 1034456k total, 1019500k used, 14956k free, 79572k buffers
Swap: 2096472k total, 0k used, 2096472k free, 769248k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4609 wusx 20 0 9920 1604 1036 S 3.9 0.2 1:52.06 sshd
5874 wusx 20 0 14220 10m 2348 R 3.6 1.0 2:07.28 ssh
5873 wusx 20 0 6500 1452 1136 R 3.0 0.1 1:30.11 scp
13234 root 20 0 2304 1004 796 R 0.7 0.1 0:00.07 top
2852 root 15 -5 0 0 0 S 0.3 0.0 0:02.83 kjournald
1 root 20 0 2068 616 528 S 0.0 0.1 0:01.89 init
2 root 15 -5 0 0 0 S 0.0 0.0 0:00.01 kthreadd
3 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/0
4 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
5 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
6 root 15 -5 0 0 0 S 0.0 0.0 0:00.03 events/0
7 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 work_on_cpu/0
8 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 khelper
112 root 15 -5 0 0 0 S 0.0 0.0 0:00.67 kblockd/0
114 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kacpid
115 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kacpi_notify
229 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 cqueue
231 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 ksuspend_usbd
237 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 khubd
240 root 15 -5 0 0 0 S 0.0 0.0 0:00.01 kseriod
291 root 20 0 0 0 0 S 0.0 0.0 0:00.00 pdflush
292 root 20 0 0 0 0 S 0.0 0.0 0:01.41 pdflush
293 root 15 -5 0 0 0 S 0.0 0.0 0:00.18 kswapd0
294 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 aio/0
546 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kpsmoused
549 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 hid_compat
607 root 15 -5 0 0 0 S 0.0 0.0 0:00.03 mpt_poll_0