Jetlang是Java高併發Actor模型開源庫包
Jetlang基於Retlang提供高效能的Java執行緒庫包,可作為JDK的java.util.concurrent庫包補充實現,它類似Scala中Actor一樣,是基於訊息的高併發庫包。
這個庫包不提供遠端訊息能力,設計用於基於單臺機器記憶體in-memory的高效能併發:
1.所有訊息將順序遞交到一個特殊的纖程Fiber(類似ErLang和GO的輕量執行緒),庫包元件將無需任何同步鎖訪問和不會產生任何資源競爭情況下很方便地改變和持有狀態。
2.單個Fiber介面可透過定製的一個執行緒或執行緒池來支援。
3.支援訊息的單個或多個訂閱者。
4.支援單個事件或批次事件的訂閱
5.單個或迴圈事件的排程
6.對低延遲和高擴充套件性進行最佳化的高效能設計
7.對外發布使用是執行緒安全的,易於和其他執行緒模型整合。
8.低鎖化競爭,將鎖競爭降低到最小化是效能關鍵,一般的執行緒池或訊息佇列的解決方案總是最後在效能上受限於一個單個鎖競爭,而Jetlang沒有這樣的中央瓶頸,效能容易擴充套件。
9.強大的非同步請求和回覆支援
使用方式:
Channel方式使用:
專案地址:
這個庫包不提供遠端訊息能力,設計用於基於單臺機器記憶體in-memory的高效能併發:
1.所有訊息將順序遞交到一個特殊的纖程Fiber(類似ErLang和GO的輕量執行緒),庫包元件將無需任何同步鎖訪問和不會產生任何資源競爭情況下很方便地改變和持有狀態。
2.單個Fiber介面可透過定製的一個執行緒或執行緒池來支援。
3.支援訊息的單個或多個訂閱者。
4.支援單個事件或批次事件的訂閱
5.單個或迴圈事件的排程
6.對低延遲和高擴充套件性進行最佳化的高效能設計
7.對外發布使用是執行緒安全的,易於和其他執行緒模型整合。
8.低鎖化競爭,將鎖競爭降低到最小化是效能關鍵,一般的執行緒池或訊息佇列的解決方案總是最後在效能上受限於一個單個鎖競爭,而Jetlang沒有這樣的中央瓶頸,效能容易擴充套件。
9.強大的非同步請求和回覆支援
使用方式:
Fiber fiber = new ThreadFiber(); fiber.start(); final CountDownLatch latch = new CountDownLatch(2); Runnable toRun = new Runnable(){ public void run(){ latch.countDown(); } }; //enqueue runnable for execution fiber.execute(toRun); //repeat to trigger latch a 2nd time fiber.execute(toRun); latch.await(10, TimeUnit.SECONDS); //shutdown thread fiber.dispose(); <p class="indent"> |
Channel方式使用:
// start thread backed receiver. // Lighweight fibers can also be created using a thread pool Fiber receiver = new ThreadFiber(); receiver.start(); // create java.util.concurrent.CountDownLatch to notify when message arrives final CountDownLatch latch = new CountDownLatch(1); // create channel to message between threads Channel<String> channel = new MemoryChannel<String>(); Callback<String> onMsg = new Callback<String>() { public void onMessage(String message) { //open latch latch.countDown(); } }; //add subscription for message on receiver thread channel.subscribe(receiver, onMsg); //publish message to receive thread. the publish method is thread safe. channel.publish("Hello"); //wait for receiving thread to receive message latch.await(10, TimeUnit.SECONDS); //shutdown thread receiver.dispose(); <p class="indent"> |
專案地址:
相關文章
- 為什麼Actor模型是高併發事務的終極解決方案?模型
- Lite Actor:方舟Actor併發模型的輕量級優化模型優化
- PHP下用Swoole實現Actor併發模型PHP模型
- comsat是用於Web開發的Java纖程Fiber和Actor模型WebJava模型
- C++併發程式設計框架Theron(1)——Actor模型介紹C++程式設計框架模型
- Java 高併發思路Java
- Java高併發綜合Java
- 什麼是高併發,怎麼解決高併發
- Java併發---concurrent包Java
- Java併發包之 CopyOnWriteArrayListJava
- 單機高併發模型設計模型
- java併發包學習系列:jdk併發容器JavaJDK
- Java併發的四種風味:Thread、Executor、ForkJoin和ActorJavathread
- Mensa是Java的模式匹配開源庫Java模式
- Java 併發包之CountDownLatch、CyclicBarrierJavaCountDownLatch
- 【Akka】Actor模型探索模型
- Java 併發包原子操作類解析Java
- 構架Java併發模型框架 (轉)Java模型框架
- Java併發(1)- 聊聊Java記憶體模型Java記憶體模型
- 『夢話高併發』J.U.C@併發包整體結構
- (四)Java高併發秒殺API之高併發優化JavaAPI優化
- Java高併發測試框架JCStressJava框架
- Java高併發之CyclicBarrier簡介Java
- java高併發系列 - 第21天:java中的CAS操作,java併發的基石Java
- (三)Java高併發秒殺系統API之Web層開發JavaAPIWeb
- Java後端開發崗必備技能:Java併發中的記憶體模型Java後端記憶體模型
- java併發筆記之java執行緒模型Java筆記執行緒模型
- Java併發程式設計:Java記憶體模型Java程式設計記憶體模型
- [分散式][高併發]高併發架構分散式架構
- Java併發中的記憶體模型Java記憶體模型
- Elasticsearch高併發寫入優化的開源協同經歷Elasticsearch優化
- 併發-1-併發模型模型
- 常用Java開源庫Java
- Java高併發之synchronized關鍵字Javasynchronized
- java高併發核心要點|系列1Java
- Java高併發系列——檢視閱讀Java
- Java高併發系統的限流策略Java
- 使用純Java編寫正規表示式的開源庫包Java