淺談Java13纖程

淺談java13 增加了纖程和一些語法,

1.switch表達(dá)式語法,整個(gè)switch語句可以作為一個(gè)值來對(duì)待

int i=0;

String s = switch(i){

case 1 ->"i為1時(shí)返回的值"

case 2 ->"i為2時(shí)返回的值"

default ->"默認(rèn)返回的值"

}

這個(gè)其實(shí)在Java12中已經(jīng)有但屬于嘗鮮版本

2.字符串語法

之前Java中字符串拼接是非常麻煩的一個(gè)東西,比如:

String a = "第一個(gè)字符串"+

? ? ? ? ? ? ? ? "第二個(gè)字符串"+

? ? ? ? ? ? ? ? "第三個(gè)字符串";

Java13中? String a = """

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 第一個(gè)字符串

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 第二個(gè)字符串

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 第三個(gè)字符串

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? """;

三個(gè)雙引號(hào)? 這是一個(gè)文本框的概念

纖程:在其他語言中早就有了纖程,比如go語言,python。? ? Java語言也慢慢開始有

什么是纖程

程序--》進(jìn)程--》線程--》纖程


線程的效率要比纖程低

CPU一個(gè)內(nèi)核態(tài) 一個(gè)用戶態(tài)

先要了解CPU 是有執(zhí)行級(jí)別的 CPU --》CPL--》0123 舉個(gè)4個(gè)級(jí)別的CPU 有些CPU有7個(gè)不同的CPU不同 了解這個(gè)概念就行,比如windows 關(guān)機(jī)是0級(jí)別 Linux系統(tǒng)里有0 和3,0是內(nèi)核態(tài),3是用戶態(tài) 可以理解為內(nèi)核態(tài)比較高級(jí)它可以干所有的事,開機(jī)關(guān)機(jī),殺死進(jìn)程等,用戶態(tài)就只能一些數(shù)據(jù)的交互,它要做一些操作要調(diào)用內(nèi)核態(tài)的指令,內(nèi)核態(tài)可以訪問所有區(qū)域的內(nèi)存,用戶態(tài)只能訪問用戶態(tài)區(qū)域的內(nèi)存。

啟動(dòng)一個(gè)app 是發(fā)生在用戶態(tài),要產(chǎn)生一個(gè)線程是要和內(nèi)核態(tài)打交道,這個(gè)打交道是重量級(jí)的,它需要保護(hù)線程,然后產(chǎn)生中斷,讓內(nèi)核處理中斷,啟動(dòng)新的線程,然后把結(jié)果反饋回來恢復(fù)線程,app繼續(xù)執(zhí)行。轉(zhuǎn)了一圈,它的效率比較低

纖程在用戶態(tài)上執(zhí)行,不需要驚動(dòng)內(nèi)核態(tài),所以纖程叫做更輕量級(jí)的線程,jvm現(xiàn)在暫時(shí)不支持纖程,為什么go語言在高并發(fā)中有天然優(yōu)勢(shì),因?yàn)間o語言在高并發(fā)時(shí)是啟動(dòng)一個(gè)go程,其實(shí)就是纖程。

Java在用這個(gè)概念發(fā)現(xiàn)不太好用于是提供了一個(gè)開源的叫做Quasar的類庫

偽代碼測試:

傳統(tǒng)線程:

long 開始時(shí)間;

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

Thread thread new Thread(){

調(diào)用方法A();

}

thread.start();

}

long 結(jié)束時(shí)間;

System打印 時(shí)間

public void A(){

int result=0;

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

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

}

}

纖程:

long 開始時(shí)間;

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

Fiber<void> fiber = new Fiber<void>(new SuspendableRunnable(){

public void run() throws SuspendExecution,InterruptedExecution{

調(diào)用方法A();A()

}

});

fiber.start();

}

long 結(jié)束時(shí)間;

System打印 時(shí)間

public void A(){

int result=0;

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

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

}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 深入理解Java虛擬機(jī)(第三版)# 高效并發(fā) chap12 Java內(nèi)存模型與線程 概述在許多場景下,讓計(jì)算機(jī)同時(shí)...
    landon30閱讀 360評(píng)論 0 0
  • 現(xiàn)代java開發(fā)指南 第一部分 第一部分:Java已不是你父親那一代的樣子 第一部分,第二部分 與歷史上任何其他的...
    htoo閱讀 2,178評(píng)論 1 37
  • 1. 面向?qū)ο?什么是面向?qū)ο?面向?qū)ο笈c面向過程 始終圍繞如何解決具體問題進(jìn)行。面向過程就是分析出解決問題所需要...
    vlsee閱讀 1,290評(píng)論 0 1
  • 必備的理論基礎(chǔ) 1.操作系統(tǒng)作用: 隱藏丑陋復(fù)雜的硬件接口,提供良好的抽象接口。 管理調(diào)度進(jìn)程,并將多個(gè)進(jìn)程對(duì)硬件...
    drfung閱讀 3,750評(píng)論 0 5
  • 多任務(wù)處理在現(xiàn)代計(jì)算機(jī)操作系統(tǒng)中幾乎已是一項(xiàng)必備的功能了。在許多場景下,讓計(jì)算機(jī)同時(shí)去做幾件事情,不僅是因?yàn)橛?jì)算機(jī)...
    tracy_668閱讀 884評(píng)論 0 4

友情鏈接更多精彩內(nèi)容