`
锅巴49
  • 浏览: 163507 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java线程与协程效果对比

阅读更多

最近项目中为解决性能问题使用了线程,但不是很理想。线程是个双刃剑,适当的线程可以加快速度,多了会让CPU压力直线上升,操作系统频繁切换,TPS反而降低。

 

一般的惯例是线程数是CPU数量的2倍以下比较好。

 

这里有篇介绍协程很好的文章,http://bluedavy.com/?p=4,该篇文章中有代码下载。

 

协程避免了操作系统切换线程的工作,用任务代替了线程。

 

我用下载的代码做了实验,我的机器是2CPU

 

java  结果:

 

=========Java Version=========
 Receive Thread Count: 2
 Requests Per Receive Task: 10000
 Request Thread Counts: 400
 Request Counts: 20000
Consume Time: 57188 ms
TPS About: 349
=========Java Version=========

 

kilim:
=========Kilim Version=========
 Receive Task Count: 2
 Requests Per Receive Task: 10000
 Request Counts: 20000
Consume Time: 18625 ms
TPS About: 1073
=========Kilim Version=========

 

kilim协程明显比java线程性能高。

 

 

实现kilim要用kilim相应的包来实现代码,最后还要对class文件织入

 

我将从http://bluedavy.com/?p=4代码下载后,编译织入打包放在附件中。你可以下载直接运行查看实验结果。

 

具体可见附件中的 说明.txt

 

 

 

 

2
0
分享到:
评论
1 楼 jahu 2014-09-25  
废话,,,,,,

相关推荐

    java开发面试常见的操作系统、python基础相关的技术点介绍以及面试问题解答

    1. 线程、进程、协程的对比? 答案:进程是资源分配的基本单位,线程是 CPU 调度的基本单位,协程是一种用户态的轻量级线程。 2. 线程、协程的对比? 答案:一个线程可以多个协程,一个进程也可以单独拥有多个...

    java纤程库-quasar,线程的线程

    #### 五、Quasar 与传统线程的对比 Quasar 与传统 Java 线程模型相比有以下几点不同: - **资源消耗**:Quasar 的纤程占用的资源远少于传统线程。 - **上下文切换**:纤程间的上下文切换开销更低。 - **并发能力**...

    JDK21虚拟线程详解.pptx.pptx

    JDK21虚拟线程,又称为Project Loom的一部分,是Java语言中引入的一项创新技术,旨在改进并发处理的效率和简化异步编程模型。虚拟线程通过轻量级的协程实现,不再依赖于操作系统的原生线程。这种设计使得在没有物理...

    浅谈线程池.pdf

    ### 线程池与go协程对比 Go语言的协程(goroutine)与Java线程池有着本质的区别。协程是一种用户态的轻量级线程,由Go运行时进行调度。相较于Java线程,goroutine的创建和切换开销非常小,使得Go程序能够在单个线程...

    java简易版开心农场源码-asyncio_different:go与python的协程对比,以及python中协程的改进历史,和示例代码

    java简易版开心农场源码 写在前面 世界是复杂的,每一种思想都是为了解决某些现实问题而简化成的模型,想解决就得先面对,面对就需要选择角度,角度决定了模型的质量, 喜欢此UP主的哲学科普,其中简洁又不失细节的介绍了...

    Java爬虫源码Java爬虫源码

    以下将详细讲解Java爬虫的核心知识点,并结合Python爬虫进行对比。 1. **网络请求库**: - Java中,`HttpURLConnection`和`Apache HttpClient`是常见的HTTP请求库。`HttpURLConnection`是Java标准库的一部分,简单...

    JAVA版本his系统源码-kilim:用于Java的轻量级线程,具有消息传递、nio、http和调度支持

    运行时库提供了利用编织器来简化并发编程的构造,包括协程、任务、Actor、邮箱(又名通道)和生成器 总之,这些设施允许简单的并发并且可以扩展到数百万个并发任务 用法 代码可以编织: 在使用 maven 插件编译期间 ...

    Kotlin+JetPack+协程实现的MVVM架构Wanandroid客户端

    **协程(Coroutines)** 是Kotlin为了解决异步编程的复杂性和回调地狱而引入的一种轻量级线程机制。在Android应用中,协程可以用来简化异步任务的执行,如网络请求、数据库操作等,使得代码更加线性、易读,减少了对...

    阿里p9高并发系统设计手册20211108.zip

    1. 并发模型:介绍多线程、协程和事件驱动模型,如Java的线程池、NIO与AIO。 2. CAP原理:探讨在分布式系统中,一致性(Consistency)、可用性(Availability)和分区容忍性(Partition tolerance)之间的权衡。 3. ...

    kotlin in chinese

    包括但不限于语言基础、编码风格、数据类型、控制流、类和对象、继承、接口、扩展函数、可见性修饰符、泛型、嵌套类、枚举类、代理模式、函数和lambda表达式、内联函数、高阶函数、协程、类型检查、自动类型转换、空...

    阿里巴巴Android面试题集(答案解析)1

    - Kotlin:Kotlin特性和与Java的对比,如协程、高阶函数、类型安全。 - 大前端:React Native、Flutter等跨平台开发框架的应用与理解。 以上只是部分关键知识点的概述,完整的面试准备还需要深入理解和实践这些内容...

    高并发编程实战1,2,3阶段

    - **线程创建**:Java中创建线程的两种方式(继承Thread类和实现Runnable接口)。 - **线程状态转换**:新创建、就绪、运行、阻塞、死亡等状态及其转换机制。 - **线程同步机制**:锁、volatile关键字、原子变量等。...

    新希望六和 android 面试题

    2. Kotlin:熟悉Kotlin语法特性,如高阶函数、扩展函数、协程等,对比Java的优势。 3. Android Jetpack Compose:学习现代UI开发框架,如何构建声明式UI。 以上是针对“新希望六和 android 面试题”可能会涉及到的...

    KotLin中文文档

    #### 与Java和Scala的对比 Kotlin在很多方面都优于Java和Scala。与Java相比,Kotlin提供了更多的现代语言特性,如空安全、扩展函数等。与Scala相比,Kotlin更加注重简洁性和类型安全,同时保持了与Java的互操作性。...

    Kotlin for android developers(非扫描中文)

    2. **Kotlin与Java对比**: 相较于Java,Kotlin具有更简洁的语法,如空安全处理、类型推断和高阶函数。例如,Kotlin中的类声明和初始化、属性定义以及构造函数都比Java更为简单。 3. **基本语法**: - **变量声明...

    《深入理解Android 卷III》PDF版本下载.txt

    - Kotlin基础语法:与Java的差异性对比、变量声明方式等。 - 高级特性介绍:扩展函数、数据类、空安全等。 - Kotlin协程:异步编程的新方式,简化复杂的并发操作。 - 安卓开发中的实践案例分析。 #### 用户界面设计...

    异步I/O处理

    它与同步I/O形成鲜明对比,同步I/O在执行时会阻塞调用线程,直到I/O操作完成,而异步I/O则允许程序在等待I/O操作完成时继续执行其他任务,从而提高系统的整体效率。 在传统的同步I/O模型中,当一个线程发起读取或...

    Kotlin比较全面的入门教程

    Kotlin与Java、Scala等其他编程语言的对比也是学习Kotlin时的重要内容。Kotlin的设计目标是解决Java语言的一些痛点,例如提供更简洁的语法和更好地支持函数式编程。 随着Kotlin的流行和广泛应用,它已经成为许多...

    android最新的面试题(带答案)

    Kotlin是Google推荐的Android开发语言,它提供了空安全、协程、扩展函数等特性,与Java相比,能减少很多冗余代码,提高开发效率。 这些只是Android面试中可能会遇到的部分知识点,实际面试可能还会涵盖更多领域,...

Global site tag (gtag.js) - Google Analytics