`

什么时候使用多线程

阅读更多

    在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   
 

 

分享到:
评论

相关推荐

    C++ Qt创建多线程的2种方式:重写run函数,使用moveToThread【应该早点知道的】源码示例

     什么是线程,多线程,什么时候使用多线程?  线程,就是CPU执行的最小单元,当然线程需要依赖进程而活着,线程不能独立存在; 每一个进程都会至少有一条主线程,就是主函数所在的线程。  那多线程是什么呢,...

    C#泛型参数多线程与复杂参数多线程2

    最近用多线程用的比较多自己走了一些弯路,分享出来希望大家少走弯路,C#中的多线程有两个重载,一个是不带参数的,一个是带参数的,但是即便是带参数的多线程也不支持泛型,这使得使用泛型参数多线程的时候很不方便...

    权威.NET多线程详解(源码示例)

    • 异步和多线程有什么关联 WinForm多线程编程篇 • 我的多线程WinForm程序老是抛出InvalidOperationException ,怎么解决? • Invoke,BeginInvoke干什么用的,内部是怎么实现的 • 每个线程都有消息队列吗? ...

    .Net 多线程详解

    • 异步和多线程有什么关联 WinForm多线程编程篇 • 我的多线程WinForm程序老是抛出InvalidOperationException ,怎么解决? • Invoke,BeginInvoke干什么用的,内部是怎么实现的 • 每个线程都有消息队列吗? ...

    C# 不使用Task实现的多线程顺序执行

    在某些特殊情况下需要用到多线程然而又要使其具备顺序性,这种时候就有了一个特殊的场景那就是多线程顺序执行,在现在VS2015中Task自带了顺序执行的方法,但在此之前的旧项目中如果需要使用多线程顺序执行该怎么办呢...

    深入理解Python 多线程

    那么什么时候用多线程呢? 首先要知道: io操作不占用CPU 计算操作占CPU,像2+5=5 Python的多线程不适合CPU密集操作型的任务,适合io密集操作型的任务,例如:SocketServer 如果现在再有CPU密集操作型的任务,那该...

    多进程多线程的分析

    个人总结,面试,常用多进程,多线程技术总结,工作中常用到的

    C#泛型参数多线程与复杂参数多线程

    最近用多线程用的比较多自己走了一些弯路,分享出来希望大家少走弯路,C#中的多线程有两个重载,一个是不带参数的,一个是带参数的,但是即便是带参数的多线程也不支持泛型,这使得使用泛型参数多线程的时候很不方便...

    易语言多线程许可证的理解使用

    易语言多线程许可证的理解使用源码,多线程许可证的理解使用,公共参数增加,公共参数减少

    多线程操作窗口源码2012813

    多线程操作窗口源码 功能介绍: 多线程是一种提高程序运行效率和性能的常用技术。 随着我们学习工作的深入,在编程中或多或少会涉及到 需要多线程的情况。多数时候,我们的操作模式是后台 线程中处理数据,计算...

    java多线程通信图解

    一张图方便理解和掌握java 多线程之间通信的实质 java 多线程 其实就是每个线程都拥有自己的内存空间,多线程之间的通信,比例A线程修改了主内存(main方法的线程)变量,需要把A线程修改的结果同步到主线程中,...

    C语言多线程

    C语言的开始设计,并未设计多线程的机制...在编译C的多线程时候,一方面必须指定Linux C语言线程库多线程库pthread,才可以正确编译(例如:gcc test.c -o test -lpthread);另一方面要包含有关线程头文件#include 。

    C# 多线程 模态 MessageBox

    在多线程中,有时候使用MessageBox.Show方法弹出对话框,弹出的Messagebox不是模态的,不能满足我的要求.所以有了这段代码.

    多线程操作实例源码

     多线程的好处在于可以提高CPU的利用率——任何一个程序员都不希望自己的程序很多时候没事可干,在多线程程序中,一个线程必须等待的时候,CPU可以运行其它的线程而不是等待,这样就大大提高了程序的效率。...

    多线程操作实例源码,,

     多线程的好处在于可以提高CPU的利用率——任何一个程序员都不希望自己的程序很多时候没事可干,在多线程程序中,一个线程必须等待的时候,CPU可以运行其它的线程而不是等待,这样就大大提高了程序的效率。...

    Python程序设计:多线程爬虫.pptx

    在Python中可使用的多线程模块主要有两个,thread和threading模块。 threading模块允许创建和管理线程,提供了更多的同步原语。threading模块中最常用的类是Thread。 Python多线程爬虫 多线程爬虫代码 ...

    多线程案例

    吧,Windows在复制文件的时候,有个动画,是在复制文件过程中进行的,也就是一边复制文件,一边播放动画,这个就是很简单的多线程,如果没有动画,复制一个大文件的时候,我们知 道计算机是死机了,还是仍然在复制呢???多线程...

    “多线程”简介及其C代码实现框架

    什么时候使用“多线程”?在程序设计中使用“多线程”有什么好处呢?很多刚入职的程序员也对“多线程”感到非常的好奇,认为它很“高大上”。本文对“多线程”进行了简单的介绍,并给出了其C代码的实现框架。

    MFC多线程的创建,包括工作线程和用户界面线程

    《MFC多线程的创建,包括工作线程和用户界面线程》全面讲解MFC多线程的创建,界面多线程与工作者多线程,多线程的起源、继承与派生,两多线程之间的区别与相同点,定时器与多线程的关系与异同(定时器是定时优先抢占...

Global site tag (gtag.js) - Google Analytics