Java的Monad和懶賦值
很老的一篇文章Higher-Order Java Parallelism, Part 1: Parallel Strategies and the Callable Monad。
如果不願意使用Scala,也可以使用Java實現函式語言Erlang和 Parallel Haskell中併發monad和懶賦值:
Monad寫法:
懶賦值:
banq注:個人在jdonframework中使用disruptor/future兩種方式實現懶賦值,disruptor吞吐量要比future大些。
如果不願意使用Scala,也可以使用Java實現函式語言Erlang和 Parallel Haskell中併發monad和懶賦值:
Monad寫法:
public static <A, B> F<Callable<A>, Callable<B>> fmap(final F<A, B> f) { return new F<Callable<A>, Callable<B>>() { public Callable<B> f(final Callable<A> a) { return bind(a, new F<A, Callable<B>>() { public Callable<B> f(final A ab) { return new Callable<B>() { public B call() { return f.f(ab); } }; } }); } }; } <p class="indent"> |
懶賦值:
public static <A> Callable<A> obtain(final Future<A> x) { return new Callable<A>() { public A call() throws Exception { return x.get(); } }; } <p class="indent"> |
banq注:個人在jdonframework中使用disruptor/future兩種方式實現懶賦值,disruptor吞吐量要比future大些。
相關文章
- 常被新手忽略的值賦值和引用賦值(偏redux向)賦值Redux
- java的多項式的加減乘除和賦值Java賦值
- jquery取值和賦值(包含部分是原生js的取值和賦值)jQuery賦值JS
- java裡面給物件賦值,慎用賦值符號(=) (轉)Java物件賦值符號
- php之普通變數賦值、物件賦值、引用賦值的區別PHP變數賦值物件
- 自己對Java中if變數賦值的理解Java變數賦值
- 變數的賦值 指標間接賦值變數賦值指標
- Java反射給泛型集合賦值Java反射泛型賦值
- JAVA 物件引用,以及物件賦值Java物件賦值
- js 利用||和&&賦值小技巧JS賦值
- JQuery給textarea取值和賦值jQuery賦值
- Monad和Monoid的定義Mono
- 【c++】深賦值與淺賦值C++賦值
- Java 中賦值類時候修改後原類中的值改變Java賦值
- JavaScript的MonadJavaScript
- c#小灶——常量、變數和賦值C#變數賦值
- Verilog連續賦值、過程賦值、過程連續賦值總結賦值
- java單例模式懶漢和餓漢Java單例模式
- Golang Map實現(四) map 的賦值和擴容Golang賦值
- 【OpenCV學習】多通道矩陣的賦值和取值OpenCV矩陣賦值
- 賦值運算子和+號的用法(兩個練習)賦值
- javascript變數賦值或者重新賦值注意事項JavaScript變數賦值
- 陣列賦值陣列賦值
- 解構賦值賦值
- PLSQL Language Reference-PL/SQL語言基礎-變數賦值-使用賦值語句賦值SQL變數賦值
- 整明白 Golang struct 例項化和賦值GolangStruct賦值
- 變數的解構賦值變數賦值
- python的賦值傳遞Python賦值
- JavaScript解構賦值的用途JavaScript賦值
- numpy.ndarray的賦值操作賦值
- 糾結的連等賦值賦值
- C++特點,物件的概念,初始化和賦值C++物件賦值
- MySQL中變數的定義和變數的賦值使用MySql變數賦值
- Java判斷欄位是否為空,為空賦值 ?Java賦值
- promise is a monad?Promise
- ES6學習-4 解構賦值(1)陣列的解構賦值賦值陣列
- Python 賦值與運算子和連線符Python賦值
- 理解Golang多重賦值Golang賦值