java协程池_Java中的“协程”

引子java

最近在从新梳理知识体系,在比较编程语言的时候,发现如今流行的lua go rust kotlin之类都有 协程的概念,而java在这块是比较迟钝的,而像go这类语言内置了协程,能够很容易写出高性能的程序。编程

什么是”协程“缓存

众所众知,进程是OS用来分配资源的最小单位,线程是进行任务执行的最小单位,进程与线程都是OS级别的,二者的运行都依赖于cpu的调度与资源分配,进程与线程都属于内核态。而协程是在种轻量级别的线程,CPU根本不知道有协程的使用调度,它运行在用户态,不须要与内核打交道,节省了OS级别的上下文切换app

Java中的协程编程语言

其实java相比go rust等有点落后,没有内置的协程概念,目前只能使用线程池,事件驱动等形式来支持高性能的程序,java目前有一些协程的类库quasar,提供了纤程的使用,纤程其实就是协程。下面用quasar写个例子来验证一下纤程有多厉害吧。例子很简单,都是启动100万个线程或者线程,每一个线程或许纤程处理2kw次运算。ide

普通线程类性能

package com.fqh.review.base.fiber;/*** @author fqh* @Description: java 线程例子* @date 2020/7/28下午4:49*/public class JavaThread{/*** 100w个线程,每一个线程处理2千万次运算* @param argus* @throws InterruptedException*/public static void main(String[] argus) throws InterruptedException{long begin = System.currentTimeMillis();int threadLength=1000000;//100wThread[] threads=new Thread[threadLength];for (int i=0;i{calc();});}for (int i=0;i

纤程测试类测试

引入quasarJar  co.paralleluniverse  quasar-core  0.7.10

package com.fqh.review.base.fiber;import co.paralleluniverse.fibers.Fiber;import java.util.concurrent.ExecutionException;/*** @author fqh* @Description: java 纤程测试用例* @date 2020/7/28下午4:48*/public class JavaFiber{/*** 100w个纤程,每一个纤程处理2千万次运算* @param argus* @throws InterruptedException*/public static void main(String[] argus) throws ExecutionException, InterruptedException{long begin = System.currentTimeMillis();int fiberLength=1000000;//100wFiber[] fibers=new Fiber[fiberLength];for (int i=0;i{calc();});}for (int i=0;i

软件环境:JDK8lua

机器配置:spa

处理器名称:       Intel Core i7  处理器速度:       2.7 GHz  处理器数目:       1  核总数:          4  L2 缓存(每一个核): 256 KB  L3 缓存:        8 MB  内存:          16 GB

测试结果:

46ed8103fd129127ef73542a184aee86.png

736db2f883f1aa2c18bace5a1e8e6413.png

线程大概在50S左右,纤程在4S左右。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值