`
neora
  • 浏览: 183851 次
  • 性别: Icon_minigender_1
  • 来自: 墨尔本
文章分类
社区版块
存档分类
最新评论

并发2000个线程的CPU占用的问题

阅读更多
在做个高并发的项目,发现个的情况向大家请教。

下面的代码很简单。就是开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();
		}
	}


分享到:
评论
5 楼 cddcdd 2008-05-08  
对我来说没什么多大差别

sleep 21 还是20的时候

差不多都占用了95 %以上
4 楼 neora 2008-05-08  
robbin 写道
我建议你在运行程序的同时用vmstat观测一下CPU的状态,特别是context switch和interrupts这两项,对比sleep 19和sleep 20两种情况下context switch和interrupts有没有很大的差别。


谢谢建议。我忘记说了。只有在Windows下发生,没法vmstat。
3 楼 robbin 2008-05-08  
我建议你在运行程序的同时用vmstat观测一下CPU的状态,特别是context switch和interrupts这两项,对比sleep 19和sleep 20两种情况下context switch和interrupts有没有很大的差别。

2 楼 y263542662 2008-05-08  
顶Ing

线程没研究过.....

期待答案.
1 楼 moses3017 2008-05-08  
恩,我有这个关于多线程的困惑,期待解答ing

相关推荐

    操作系统 :多线程 CPU scheduling

    操作系统中的多线程CPU调度是计算机系统中一个关键的概念,它涉及到如何有效地分配处理器资源以提高系统的并发性和响应性。在多线程环境下,多个线程可以共享同一个进程的资源,使得程序能同时执行多个任务,提升...

    多线程并发处理数据的问题

    合理控制并发数量,使用线程池可以避免这个问题。 4. 线程通信:有时线程之间需要交换信息,可以使用wait()、notify()或notifyAll()方法,或者使用BlockingQueue等并发工具类。 5. 性能监控:对线程池、CPU利用率...

    根据进程ID获取进程的内存使用量,CPU使用率,线程个数据信息

    总之,监控进程的内存使用、CPU占用和线程数是理解和优化系统性能的重要手段。通过合理使用操作系统提供的接口和工具,我们可以有效地获取这些信息,为系统管理提供有力的数据支持。在实际操作中,还需要考虑并发...

    控制cpu的占用率

    在IT领域,优化CPU占用率是一项重要的任务,...总之,控制CPU占用率涉及多方面的技术,包括代码优化、线程管理、内存优化以及使用各种监控和分析工具。通过深入理解和实践,我们可以有效地改善系统性能,提升用户体验。

    进程cpu占用率和内存使用大小获取

    CPU占用率是衡量一个进程在CPU上运行时间的比例,通常以百分比表示。在Windows系统中,可以使用`CreateToolhelp32Snapshot`、`Process32First`和`Process32Next`函数遍历进程列表,然后通过`OpenProcess`和`...

    JVM---jstack分析Java线程CPU占用,线程死锁的解决

    在开发和运维过程中,有时会遇到Java应用的性能问题,如线程CPU占用过高或者线程死锁。这时,我们就需要用到JVM提供的工具,如`jstack`,来帮助诊断和解决问题。 `jstack` 是JDK自带的一个命令行工具,它能够打印出...

    查看进程各线程资源占用工具

    同一进程内的多个线程共享进程的内存资源,但拥有独立的执行栈,使得它们可以并发执行。 2. **CPU占用率**: - **CPU利用率**:衡量处理器空闲时间与总时间的比例,反映了一个线程或进程对CPU资源的消耗程度。高...

    70-Java程序CPU占用1001

    通过对以上步骤的分析,我们通常能够定位到导致CPU占用过高的原因,并采取相应的优化措施,如调整并发控制、优化算法、减少不必要的计算或I/O操作等。在实际应用中,还可以结合Java Profiler工具(如VisualVM、...

    SQLSERVER排查CPU占用高的情况

    最近几天,该服务器上运行的金蝶 K3 软件出现了 CPU 占用率异常增高的现象,并且这一问题似乎只在每天特定的时间段内发生。同时,服务器的内存占用也达到了 30GB,这意味着超过一半的可用内存已被占用。 #### 排查...

    cpu占用分析工具,systrace

    1. **CPU使用率监控**:systrace能显示每个进程和线程的CPU占用情况,包括其在不同状态(如用户态、内核态)下的时间占比。 2. **GPU活动分析**:对于图形密集型应用,它可以监测GPU的负载,帮助识别渲染问题。 3. *...

    Java进程cpu占用率高

    本篇文章将深入探讨这个问题,并提供相关解决方案。 首先,我们需要理解Java进程的CPU利用率是如何计算的。在操作系统层面,CPU占用率是指进程在单位时间内使用CPU的时间比例。对于Java应用,这可能是由于各种原因...

    SystemUsage_系统CPU资源占用率_

    在IT领域,了解系统资源的...总的来说,通过Python编程获取和分析系统CPU资源占用率是系统管理员和开发者进行性能监控和问题排查的重要工具。结合适当的库和编程技巧,我们可以实现高效、直观的系统资源监控解决方案。

    Linux下基于socket多线程并发通信的实现.pdf

    在Linux下基于socket多线程并发通信的编程中,多线程并发具有的优势是可以减少CPU被大量占用,提高编程的效率和应用程序响应的速度,促进系统的程序结构进一步优化。在合理运用并发技术的情况下,可以同时完成多个...

    线程死锁CPU过高,请求原因分析

    1. **锁竞争**:虽然WeakHashMap本身的内部实现是线程安全的,但在并发访问时,如果多个线程同时操作同一个WeakHashMap,可能会引发锁竞争,导致CPU升高。 2. **弱引用清理**:垃圾回收器清理弱引用时,如果这个过程...

    C# 如何挂起线程、休眠线程和终止线程(源码例)

    休眠线程是一种避免线程过度占用CPU资源的好方法,尤其在需要定时执行或者需要其他线程执行特定任务时。 3. **终止线程**: 终止线程是指强制结束线程的执行,使其不再继续运行。在C#中,直接使用`Thread.Abort()`...

    C#实现控制线程池最大数并发线程

    我们需要一个机制来限制每次循环的并发线程数,并确保所有任务在主线程退出前完成。 3. **实现逻辑**: - **wait_sync**:使用`AutoResetEvent`来控制每次循环中并发执行的线程数,限制为10个。当一个线程执行完毕...

    CPU压测JAR包,可以将多核CPU资源吃满

    java -jar xxx.jar调用 输入线程数,回车【想压满的话,输入CPU线程数】,开始压测 按S退出

    易语言线程池操作例程(解决内存不断升高的问题)

    2、线程池则完美的解决了这个问题,线程池的原理就是事先申请好指定数量的线程所使用的资源,而且这些资源是不断的重复利用的!可利用任务管理器看到程序的线程数量的变化(在使用普通的多线程时:线程数会根据软件...

Global site tag (gtag.js) - Google Analytics