java 纤程库_浅谈Java13纤程

浅谈java13 增加了纤程和一些语法,

1.switch表达式语法,整个switch语句可以作为一个值来对待

int i=0;

String s = switch(i){

case 1 ->"i为1时返回的值"

case 2 ->"i为2时返回的值"

default ->"默认返回的值"

}

这个其实在Java12中已经有但属于尝鲜版本

2.字符串语法

之前Java中字符串拼接是非常麻烦的一个东西,比如:

String a = "第一个字符串"+

"第二个字符串"+

"第三个字符串";

Java13中  String a = """

第一个字符串

第二个字符串

第三个字符串

""";

三个双引号  这是一个文本框的概念

纤程:在其他语言中早就有了纤程,比如go语言,python。    Java语言也慢慢开始有

什么是纤程

程序--》进程--》线程--》纤程

9d3268bcd094

线程的效率要比纤程低

CPU一个内核态 一个用户态

先要了解CPU 是有执行级别的 CPU --》CPL--》0123 举个4个级别的CPU 有些CPU有7个不同的CPU不同 了解这个概念就行,比如windows 关机是0级别 Linux系统里有0 和3,0是内核态,3是用户态 可以理解为内核态比较高级它可以干所有的事,开机关机,杀死进程等,用户态就只能一些数据的交互,它要做一些操作要调用内核态的指令,内核态可以访问所有区域的内存,用户态只能访问用户态区域的内存。

启动一个app 是发生在用户态,要产生一个线程是要和内核态打交道,这个打交道是重量级的,它需要保护线程,然后产生中断,让内核处理中断,启动新的线程,然后把结果反馈回来恢复线程,app继续执行。转了一圈,它的效率比较低

纤程在用户态上执行,不需要惊动内核态,所以纤程叫做更轻量级的线程,jvm现在暂时不支持纤程,为什么go语言在高并发中有天然优势,因为go语言在高并发时是启动一个go程,其实就是纤程。

Java在用这个概念发现不太好用于是提供了一个开源的叫做Quasar的类库

伪代码测试:

传统线程:

long 开始时间;

for(int i=0;i<10000;i++){

Thread thread new Thread(){

调用方法A();

}

thread.start();

}

long 结束时间;

System打印 时间

public void A(){

int result=0;

for(int i=0;i<10000;i++){

for(int m=0;m<1000;m++)result+=i;

}

}

纤程:

long 开始时间;

for(int i=0;i<10000;i++){

Fiber fiber = new Fiber(new SuspendableRunnable(){

public void run() throws SuspendExecution,InterruptedExecution{

调用方法A();A()

}

});

fiber.start();

}

long 结束时间;

System打印 时间

public void A(){

int result=0;

for(int i=0;i<10000;i++){

for(int m=0;m<1000;m++)result+=i;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值