`

什么时候使用多线程

阅读更多

    在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   
 

 

分享到:
评论

相关推荐

    .net开发人员面试题-多线程.pdf

    5. 请结合你的项目,介绍你在设计中为什么使用了多线程,并且为什么具体选择了这种方案。 A. 没有具体的使用场景。 B. 能从某一个角度介绍使用场景,并且能表述为什么当初使用了这个场景。 C. 作为团队的一员,参加...

    Arduino 使用多线程例子

    标题中的“Arduino 使用多线程例子”意味着我们将探讨如何在Arduino平台上实现多任务并行处理。通常,Arduino基于单片机,不直接支持操作系统或内置的多线程机制。但是,通过巧妙编程和使用库,我们可以模拟多线程的...

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

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

    多线程简介以及在JAVA项目中的应用

    2. 为什么使用多线程 多线程的主要优势在于提高了资源利用率和系统效率。在多核处理器的环境中,通过多线程,可以使得不同的任务在不同的核心上并发执行,避免了单线程在等待I/O操作或其他阻塞情况时造成CPU的空闲...

    C#多线程互斥实例 多线程获取同一变量

    在实际的多线程应用中,除了`lock`,还可以使用`Monitor`、`Mutex`、`Semaphore`等其他同步机制来实现互斥和资源限制。例如,`Mutex`允许跨进程的互斥访问,而`Semaphore`则可以控制同时访问资源的线程数量。 测试...

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

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

    C语言使用多线程例子

    在这个“C语言使用多线程例子”中,我们将探讨如何使用Windows API中的`CreateThread`函数来创建线程。 首先,`CreateThread`函数是Windows操作系统提供的一种API调用,用于在进程中创建新的执行线程。它的基本语法...

    C#多线程读写sqlite

    这个项目的源代码可能包含了如何在C#中使用多线程和同步锁与SQLite交互的示例。通常,它会展示如何在多个线程中并行执行读写操作,以及如何使用`lock`或其他同步原语来保护对数据库的访问。测试部分可能会比较不同...

    .Net 多线程详解

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

    Qt 使用多线程QThread实现进度条

    在Qt框架中,多线程是提升应用程序性能和响应性的重要技术。QThread类是Qt提供的用于线程操作的工具,它使得线程管理变得更加方便,尤其在UI更新和耗时计算任务之间需要分离时。本篇文章将深入探讨如何利用QThread来...

    CURL多线程类库

    当面临大量HTTP请求或者需要进行复杂的网络操作时,单线程的CURL可能无法满足高性能的需求,这时候就需要引入多线程技术来提升效率。 在PHP中,通过结合CURL和多线程,我们可以构建出强大的类库,将多个请求并发...

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

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

    C#多线程List的非线程安全性

    本文将深入探讨在多线程环境中使用List时遇到的非线程安全问题,并提供相应的解决方案和最佳实践。 List是.NET框架中常用的一个动态数组,它提供了方便的增删改查操作。然而,List并未设计为线程安全的容器,这意味...

    c语言多线程 c语言多线程

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

    深入理解Python 多线程

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

    CC++多线程编程练习题大全

    2. **线程同步与互斥**:为避免多线程间的竞态条件,需要使用同步机制。C++提供了`std::mutex`来实现互斥锁,保证同一时间只有一个线程访问共享资源。`std::lock_guard`是RAII(Resource Acquisition Is ...

    在PB中实现 多线程的例子

    例如,`Mutex`用于在多线程访问同一资源时提供独占访问,确保任何时候只有一个线程可以访问。 ```pb Mutex mutex = Create Mutex mutex.Lock() // 获取锁 // 访问共享资源 mutex.Unlock() // 释放锁 ``` **4. 线程...

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

    在易语言中,理解和使用多线程许可证可以帮助开发者更好地管理这些线程,防止因资源竞争导致的问题,如数据不一致性和死锁。 许可证系统是多线程编程中的一个工具,用于限制同时访问特定资源的线程数量。在易语言中...

Global site tag (gtag.js) - Google Analytics