在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
分享到:
相关推荐
5. 请结合你的项目,介绍你在设计中为什么使用了多线程,并且为什么具体选择了这种方案。 A. 没有具体的使用场景。 B. 能从某一个角度介绍使用场景,并且能表述为什么当初使用了这个场景。 C. 作为团队的一员,参加...
标题中的“Arduino 使用多线程例子”意味着我们将探讨如何在Arduino平台上实现多任务并行处理。通常,Arduino基于单片机,不直接支持操作系统或内置的多线程机制。但是,通过巧妙编程和使用库,我们可以模拟多线程的...
什么是线程,多线程,什么时候使用多线程? 线程,就是CPU执行的最小单元,当然线程需要依赖进程而活着,线程不能独立存在; 每一个进程都会至少有一条主线程,就是主函数所在的线程。 那多线程是什么呢,...
2. 为什么使用多线程 多线程的主要优势在于提高了资源利用率和系统效率。在多核处理器的环境中,通过多线程,可以使得不同的任务在不同的核心上并发执行,避免了单线程在等待I/O操作或其他阻塞情况时造成CPU的空闲...
在实际的多线程应用中,除了`lock`,还可以使用`Monitor`、`Mutex`、`Semaphore`等其他同步机制来实现互斥和资源限制。例如,`Mutex`允许跨进程的互斥访问,而`Semaphore`则可以控制同时访问资源的线程数量。 测试...
最近用多线程用的比较多自己走了一些弯路,分享出来希望大家少走弯路,C#中的多线程有两个重载,一个是不带参数的,一个是带参数的,但是即便是带参数的多线程也不支持泛型,这使得使用泛型参数多线程的时候很不方便...
在这个“C语言使用多线程例子”中,我们将探讨如何使用Windows API中的`CreateThread`函数来创建线程。 首先,`CreateThread`函数是Windows操作系统提供的一种API调用,用于在进程中创建新的执行线程。它的基本语法...
这个项目的源代码可能包含了如何在C#中使用多线程和同步锁与SQLite交互的示例。通常,它会展示如何在多个线程中并行执行读写操作,以及如何使用`lock`或其他同步原语来保护对数据库的访问。测试部分可能会比较不同...
• 异步和多线程有什么关联 WinForm多线程编程篇 • 我的多线程WinForm程序老是抛出InvalidOperationException ,怎么解决? • Invoke,BeginInvoke干什么用的,内部是怎么实现的 • 每个线程都有消息队列吗? ...
在Qt框架中,多线程是提升应用程序性能和响应性的重要技术。QThread类是Qt提供的用于线程操作的工具,它使得线程管理变得更加方便,尤其在UI更新和耗时计算任务之间需要分离时。本篇文章将深入探讨如何利用QThread来...
当面临大量HTTP请求或者需要进行复杂的网络操作时,单线程的CURL可能无法满足高性能的需求,这时候就需要引入多线程技术来提升效率。 在PHP中,通过结合CURL和多线程,我们可以构建出强大的类库,将多个请求并发...
在某些特殊情况下需要用到多线程然而又要使其具备顺序性,这种时候就有了一个特殊的场景那就是多线程顺序执行,在现在VS2015中Task自带了顺序执行的方法,但在此之前的旧项目中如果需要使用多线程顺序执行该怎么办呢...
本文将深入探讨在多线程环境中使用List时遇到的非线程安全问题,并提供相应的解决方案和最佳实践。 List是.NET框架中常用的一个动态数组,它提供了方便的增删改查操作。然而,List并未设计为线程安全的容器,这意味...
在编译 C 的多线程时候,一方面必须指定 Linux C 语言线程库多线程库 pthread,才可以正确编译(例如:gcc test.c -o test -lpthread);另一方面要包含有关线程头文件#include 。 C 多线程操作: * 线程创建:...
那么什么时候用多线程呢? 首先要知道: io操作不占用CPU 计算操作占CPU,像2+5=5 Python的多线程不适合CPU密集操作型的任务,适合io密集操作型的任务,例如:SocketServer 如果现在再有CPU密集操作型的任务,那该...
2. **线程同步与互斥**:为避免多线程间的竞态条件,需要使用同步机制。C++提供了`std::mutex`来实现互斥锁,保证同一时间只有一个线程访问共享资源。`std::lock_guard`是RAII(Resource Acquisition Is ...
例如,`Mutex`用于在多线程访问同一资源时提供独占访问,确保任何时候只有一个线程可以访问。 ```pb Mutex mutex = Create Mutex mutex.Lock() // 获取锁 // 访问共享资源 mutex.Unlock() // 释放锁 ``` **4. 线程...
在易语言中,理解和使用多线程许可证可以帮助开发者更好地管理这些线程,防止因资源竞争导致的问题,如数据不一致性和死锁。 许可证系统是多线程编程中的一个工具,用于限制同时访问特定资源的线程数量。在易语言中...