日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

進程:process 線程:thread 協程:coroutine/feber 引子 最近在重新梳理知識體系,在比較編程語言的時候,發現現在流行的lua go rust kotlin之類都有 協程的概念,而JAVA在這塊是比較遲鈍的,而像go這類語言內置了協程,可以很容易寫出高性能的程序。 什么是”協程“ 眾所眾知,進程是OS用來分配資源的最小單位,線程是進行任務執行的最小單位,進程與線程都是OS級別的,兩者的運行都依賴于cpu的調度與資源分配,進程與線程都屬于內核態。而協程是在種輕量級別的線程,CPU根本不知道有協程的使用調度,它運行在用戶態,不需要與內核打交道,節省了OS級別的上下文切換 Java中的協程 其實java相比go rust等有點落后,沒有內置的協程概念,目前只能使用線程池,事件驅動等形式來支持高性能的程序,java目前有一些協程的類庫quasar,提供了纖程的使用,纖程其實就是協程。下面用quasar寫個例子來驗證一下纖程有多厲害吧。例子很簡單,啟動100萬個線程或者纖程,每個線程或纖程處理2kw次運算。

普通線程類 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;//100w Thread[] threads=new Thread[threadLength]; for (int i=0;i<threadLength;i++){ threads[i]=new Thread(()->{ calc(); }); }
for (int i=0;i<threadLength;i++){
  threads[i].start();
}
for (int i=0;i<threadLength;i++){
  threads[i].join();
}
System.out.println(System.currentTimeMillis()-begin);

}

//2kw次計算 static void calc(){ int result=0; for(int i=0;i<10000;i++){ for(int j=0;j<200;j++){ result+=i; } } }

}

  • 纖程測試類 引入quasarJar

<dependency> <groupId>co.paralleluniverse</groupId> <artifactId>quasar-core</artifactId> <version>0.7.10</version> </dependency>

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;//100w Fiber<Void>[] fibers=new Fiber[fiberLength]; for (int i=0;i<fiberLength;i++){ fibers[i]=new Fiber(()->{ calc(); }); }for (int i=0;i<fiberLength;i++){ fibers[i].start(); } for (int i=0;i<fiberLength;i++){ fibers[i].join(); } System.out.println(System.currentTimeMillis()-begin); }

//2kw次計算 static void calc(){ int result=0; for(int i=0;i<10000;i++){ for(int j=0;j<200;j++){ result+=i; } } } }

  • 軟件環境: JDK8
  • 機器配置:處理器名稱: Intel Core i7 處理器速度: 2.7 GHz 處理器數目: 1 核總數: 4 L2 緩存(每個核): 256 KB L3 緩存: 8 MB 內存: 16 GB

測試結果: 線程大概在50S左右,纖程在4S左右。。 ||

是不是被測試結果驚呆了。。只希望java能盡快把纖程進行內置。這樣go rust之類的也就沒有什么優勢了。。 進程:process 線程:thread 協程:coroutine/feber 引子 最近在重新梳理知識體系,在比較編程語言的時候,發現現在流行的lua go rust kotlin之類都有 協程的概念,而java在這塊是比較遲鈍的,而像go這類語言內置了協程,可以很容易寫出高性能的程序。 什么是”協程“ 眾所眾知,進程是OS用來分配資源的最小單位,線程是進行任務執行的最小單位,進程與線程都是OS級別的,兩者的運行都依賴于cpu的調度與資源分配,進程與線程都屬于內核態。而協程是在種輕量級別的線程,CPU根本不知道有協程的使用調度,它運行在用戶態,不需要與內核打交道,節省了OS級別的上下文切換 Java中的協程 其實java相比go rust等有點落后,沒有內置的協程概念,目前只能使用線程池,事件驅動等形式來支持高性能的程序,java目前有一些協程的類庫quasar,提供了纖程的使用,纖程其實就是協程。下面用quasar寫個例子來驗證一下纖程有多厲害吧。例子很簡單,啟動100萬個線程或者纖程,每個線程或纖程處理2kw次運算。

普通線程類 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;//100w Thread[] threads=new Thread[threadLength]; for (int i=0;i<threadLength;i++){ threads[i]=new Thread(()->{ calc(); }); }
for (int i=0;i<threadLength;i++){
  threads[i].start();
}
for (int i=0;i<threadLength;i++){
  threads[i].join();
}
System.out.println(System.currentTimeMillis()-begin);

}

//2kw次計算 static void calc(){ int result=0; for(int i=0;i<10000;i++){ for(int j=0;j<200;j++){ result+=i; } } }

}

  • 纖程測試類 引入quasarJar

<dependency> <groupId>co.paralleluniverse</groupId> <artifactId>quasar-core</artifactId> <version>0.7.10</version> </dependency>

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;//100w Fiber<Void>[] fibers=new Fiber[fiberLength]; for (int i=0;i<fiberLength;i++){ fibers[i]=new Fiber(()->{ calc(); }); }for (int i=0;i<fiberLength;i++){ fibers[i].start(); } for (int i=0;i<fiberLength;i++){ fibers[i].join(); } System.out.println(System.currentTimeMillis()-begin); }

//2kw次計算 static void calc(){ int result=0; for(int i=0;i<10000;i++){ for(int j=0;j<200;j++){ result+=i; } } } }

  • 軟件環境: JDK8
  • 機器配置:處理器名稱: Intel Core i7 處理器速度: 2.7 GHz 處理器數目: 1 核總數: 4 L2 緩存(每個核): 256 KB L3 緩存: 8 MB 內存: 16 GB

測試結果: 線程大概在50S左右,纖程在4S左右。。 ||

是不是被測試結果驚呆了。。只希望java能盡快把纖程進行內置。這樣go rust之類的也就沒有什么優勢了。。

分享到:
標簽:Java 協程
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定