Suche senden
Hochladen
Fork/Join Framework
•
Als PPTX, PDF herunterladen
•
3 gefällt mir
•
1,821 views
Appresso Engineering Team
Folgen
Melden
Teilen
Melden
Teilen
1 von 14
Jetzt herunterladen
Empfohlen
Final LINQ Extensions
Final LINQ Extensions
Kouji Matsui
150421 es6とかな話
150421 es6とかな話
kotaro_hirayama
async/await不要論
async/await不要論
bleis tift
Kotlinについて学んだコト
Kotlinについて学んだコト
iPride Co., Ltd.
Final LINQ Extensions II
Final LINQ Extensions II
Kouji Matsui
async/awaitダークサイド is 何
async/awaitダークサイド is 何
Kouji Matsui
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
y torazuka
Xcore introduction
Xcore introduction
Akira Tanaka
Empfohlen
Final LINQ Extensions
Final LINQ Extensions
Kouji Matsui
150421 es6とかな話
150421 es6とかな話
kotaro_hirayama
async/await不要論
async/await不要論
bleis tift
Kotlinについて学んだコト
Kotlinについて学んだコト
iPride Co., Ltd.
Final LINQ Extensions II
Final LINQ Extensions II
Kouji Matsui
async/awaitダークサイド is 何
async/awaitダークサイド is 何
Kouji Matsui
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
y torazuka
Xcore introduction
Xcore introduction
Akira Tanaka
第37回NDS Java並行処理 今昔物語
第37回NDS Java並行処理 今昔物語
civic Sasaki
Web Component概要
Web Component概要
Shumpei Shiraishi
PyPy 紹介
PyPy 紹介
shoma h
Node-v0.12のTLSを256倍使いこなす方法
Node-v0.12のTLSを256倍使いこなす方法
shigeki_ohtsu
Node-v0.12の新機能について
Node-v0.12の新機能について
shigeki_ohtsu
ECMAScript没proposal追悼式
ECMAScript没proposal追悼式
京大 マイコンクラブ
C++の話(本当にあった怖い話)
C++の話(本当にあった怖い話)
Yuki Tamura
スマホデザインパターン なう
スマホデザインパターン なう
Android UI勉強会
バグハンターの哀しみ
バグハンターの哀しみ
Masato Kinugawa
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
bitter_fox
Bitcoinを技術的に理解する
Bitcoinを技術的に理解する
Kenji Urushima
最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!
Yuji Nojima
ES6 in Practice
ES6 in Practice
Teppei Sato
You Don't Know ES Modules
You Don't Know ES Modules
Teppei Sato
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
CODE BLUE
SSL/TLSの基礎と最新動向
SSL/TLSの基礎と最新動向
shigeki_ohtsu
自転車のVRシステムがあったら欲しいですか?
自転車のVRシステムがあったら欲しいですか?
Chikara Tomioka
「宣言的プログラミング」とSDNのひとつの形態
「宣言的プログラミング」とSDNのひとつの形態
npsg
Mk network programmability-03
Mk network programmability-03
Miya Kohno
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ
Everforth Co., Ltd.
Scalaz-StreamによるFunctional Reactive Programming
Scalaz-StreamによるFunctional Reactive Programming
Tomoharu ASAMI
Weitere ähnliche Inhalte
Andere mochten auch
第37回NDS Java並行処理 今昔物語
第37回NDS Java並行処理 今昔物語
civic Sasaki
Web Component概要
Web Component概要
Shumpei Shiraishi
PyPy 紹介
PyPy 紹介
shoma h
Node-v0.12のTLSを256倍使いこなす方法
Node-v0.12のTLSを256倍使いこなす方法
shigeki_ohtsu
Node-v0.12の新機能について
Node-v0.12の新機能について
shigeki_ohtsu
ECMAScript没proposal追悼式
ECMAScript没proposal追悼式
京大 マイコンクラブ
C++の話(本当にあった怖い話)
C++の話(本当にあった怖い話)
Yuki Tamura
スマホデザインパターン なう
スマホデザインパターン なう
Android UI勉強会
バグハンターの哀しみ
バグハンターの哀しみ
Masato Kinugawa
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
bitter_fox
Bitcoinを技術的に理解する
Bitcoinを技術的に理解する
Kenji Urushima
最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!
Yuji Nojima
ES6 in Practice
ES6 in Practice
Teppei Sato
You Don't Know ES Modules
You Don't Know ES Modules
Teppei Sato
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
CODE BLUE
SSL/TLSの基礎と最新動向
SSL/TLSの基礎と最新動向
shigeki_ohtsu
自転車のVRシステムがあったら欲しいですか?
自転車のVRシステムがあったら欲しいですか?
Chikara Tomioka
Andere mochten auch
(17)
第37回NDS Java並行処理 今昔物語
第37回NDS Java並行処理 今昔物語
Web Component概要
Web Component概要
PyPy 紹介
PyPy 紹介
Node-v0.12のTLSを256倍使いこなす方法
Node-v0.12のTLSを256倍使いこなす方法
Node-v0.12の新機能について
Node-v0.12の新機能について
ECMAScript没proposal追悼式
ECMAScript没proposal追悼式
C++の話(本当にあった怖い話)
C++の話(本当にあった怖い話)
スマホデザインパターン なう
スマホデザインパターン なう
バグハンターの哀しみ
バグハンターの哀しみ
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Bitcoinを技術的に理解する
Bitcoinを技術的に理解する
最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!
ES6 in Practice
ES6 in Practice
You Don't Know ES Modules
You Don't Know ES Modules
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
SSL/TLSの基礎と最新動向
SSL/TLSの基礎と最新動向
自転車のVRシステムがあったら欲しいですか?
自転車のVRシステムがあったら欲しいですか?
Ähnlich wie Fork/Join Framework
「宣言的プログラミング」とSDNのひとつの形態
「宣言的プログラミング」とSDNのひとつの形態
npsg
Mk network programmability-03
Mk network programmability-03
Miya Kohno
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ
Everforth Co., Ltd.
Scalaz-StreamによるFunctional Reactive Programming
Scalaz-StreamによるFunctional Reactive Programming
Tomoharu ASAMI
Startup JavaScript
Startup JavaScript
Akinari Tsugo
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
Sotaro Kimura
Ll tiger clojure
Ll tiger clojure
Toshiaki Maki
Scala Daysに行ってみて
Scala Daysに行ってみて
Kota Mizushima
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
Principles of Transaction Processing Second Edition 9章 4~9節
Principles of Transaction Processing Second Edition 9章 4~9節
Yuichiro Saito
Project Loom - 限定継続と軽量スレッド -
Project Loom - 限定継続と軽量スレッド -
Yuichi Sakuraba
2009年のPHPフレームワーク
2009年のPHPフレームワーク
Takuya Sato
Example of exiting legacy system
Example of exiting legacy system
TakamchiTanaka
Durable function storage provider
Durable function storage provider
Kazunori Hamamoto
Apache Mesosってなに
Apache Mesosってなに
Shingo Kitayama
並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
Yoshimura Soichiro
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
gree_tech
Apache Auroraの始めかた
Apache Auroraの始めかた
Masahito Zembutsu
Pythonの非同期処理を始める前に
Pythonの非同期処理を始める前に
koralle
Ähnlich wie Fork/Join Framework
(20)
「宣言的プログラミング」とSDNのひとつの形態
「宣言的プログラミング」とSDNのひとつの形態
Mk network programmability-03
Mk network programmability-03
できる!並列・並行プログラミング
できる!並列・並行プログラミング
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ
Scalaz-StreamによるFunctional Reactive Programming
Scalaz-StreamによるFunctional Reactive Programming
Startup JavaScript
Startup JavaScript
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
Ll tiger clojure
Ll tiger clojure
Scala Daysに行ってみて
Scala Daysに行ってみて
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
Principles of Transaction Processing Second Edition 9章 4~9節
Principles of Transaction Processing Second Edition 9章 4~9節
Project Loom - 限定継続と軽量スレッド -
Project Loom - 限定継続と軽量スレッド -
2009年のPHPフレームワーク
2009年のPHPフレームワーク
Example of exiting legacy system
Example of exiting legacy system
Durable function storage provider
Durable function storage provider
Apache Mesosってなに
Apache Mesosってなに
並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
Apache Auroraの始めかた
Apache Auroraの始めかた
Pythonの非同期処理を始める前に
Pythonの非同期処理を始める前に
Mehr von Appresso Engineering Team
20150302 java8 第一回_ラムダ式(1)
20150302 java8 第一回_ラムダ式(1)
Appresso Engineering Team
Effective Java 輪読会 項目77-78
Effective Java 輪読会 項目77-78
Appresso Engineering Team
Effective Java 輪読会 項目74-75
Effective Java 輪読会 項目74-75
Appresso Engineering Team
マルチスレッド デザインパターン ― Single Threaded Execution
マルチスレッド デザインパターン ― Single Threaded Execution
Appresso Engineering Team
JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文
Appresso Engineering Team
JavaScript 勉強会 ― 型と値
JavaScript 勉強会 ― 型と値
Appresso Engineering Team
Effective Java 輪読会 項目69-70追加
Effective Java 輪読会 項目69-70追加
Appresso Engineering Team
Effective Java 輪読会 項目69-70
Effective Java 輪読会 項目69-70
Appresso Engineering Team
Effective Java 輪読会 項目66-68
Effective Java 輪読会 項目66-68
Appresso Engineering Team
Effective Java 輪読会 項目71-73
Effective Java 輪読会 項目71-73
Appresso Engineering Team
Java Day Tokyo 2014 まとめ (chen)
Java Day Tokyo 2014 まとめ (chen)
Appresso Engineering Team
Effective Java 輪読会 項目63-65
Effective Java 輪読会 項目63-65
Appresso Engineering Team
Effective Java 輪読会 項目60-62
Effective Java 輪読会 項目60-62
Appresso Engineering Team
Effective java 輪読会 項目57-59
Effective java 輪読会 項目57-59
Appresso Engineering Team
Effective Java 輪読会 項目49-52
Effective Java 輪読会 項目49-52
Appresso Engineering Team
Effective Java 輪読会 項目45-48
Effective Java 輪読会 項目45-48
Appresso Engineering Team
Effective Java 輪読会 項目53-56
Effective Java 輪読会 項目53-56
Appresso Engineering Team
Effective Java 輪読会 第7章 項目43-44
Effective Java 輪読会 第7章 項目43-44
Appresso Engineering Team
Effective Java 輪読会 第7章 項目41-42
Effective Java 輪読会 第7章 項目41-42
Appresso Engineering Team
Effective Java 輪読会 第7章 項目38-40
Effective Java 輪読会 第7章 項目38-40
Appresso Engineering Team
Mehr von Appresso Engineering Team
(20)
20150302 java8 第一回_ラムダ式(1)
20150302 java8 第一回_ラムダ式(1)
Effective Java 輪読会 項目77-78
Effective Java 輪読会 項目77-78
Effective Java 輪読会 項目74-75
Effective Java 輪読会 項目74-75
マルチスレッド デザインパターン ― Single Threaded Execution
マルチスレッド デザインパターン ― Single Threaded Execution
JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 型と値
JavaScript 勉強会 ― 型と値
Effective Java 輪読会 項目69-70追加
Effective Java 輪読会 項目69-70追加
Effective Java 輪読会 項目69-70
Effective Java 輪読会 項目69-70
Effective Java 輪読会 項目66-68
Effective Java 輪読会 項目66-68
Effective Java 輪読会 項目71-73
Effective Java 輪読会 項目71-73
Java Day Tokyo 2014 まとめ (chen)
Java Day Tokyo 2014 まとめ (chen)
Effective Java 輪読会 項目63-65
Effective Java 輪読会 項目63-65
Effective Java 輪読会 項目60-62
Effective Java 輪読会 項目60-62
Effective java 輪読会 項目57-59
Effective java 輪読会 項目57-59
Effective Java 輪読会 項目49-52
Effective Java 輪読会 項目49-52
Effective Java 輪読会 項目45-48
Effective Java 輪読会 項目45-48
Effective Java 輪読会 項目53-56
Effective Java 輪読会 項目53-56
Effective Java 輪読会 第7章 項目43-44
Effective Java 輪読会 第7章 項目43-44
Effective Java 輪読会 第7章 項目41-42
Effective Java 輪読会 第7章 項目41-42
Effective Java 輪読会 第7章 項目38-40
Effective Java 輪読会 第7章 項目38-40
Fork/Join Framework
1.
Fork/Join Framework
大崎 瑶
2.
なぜ?Fork/Join • 並行性と並列性 • 並列性を上げるには? •
Work Stealingアルゴリズム
3.
並行性と並列性 • 並行性とは –
プログラムが論理的に並行実行可能な状態 – プリエンプティブなスレッドのこと • 並列性とは – 並行性を持つプログラムが時間的に並列に実 行されること ものすごいオレオレ解釈だし、もうちょっと厳密な定義がありそうな 気がしますが・・・
4.
並行性 ポイントは2つ プリエンプティブである(割り込みが可能)
この間に別のことが割り込める メモリリソース(変数)を共有する 変数 同じ変数への同時のアクセスを制限する仕組みを持っている
5.
並行性の例
IO待ちが発生 CPUが遊んでいる間に ほかのことが出来る GUIのプログラミングでは並行動作するように設計するのが 基本 (でないと、IO待ちで操作がブロックされてしまう)
6.
並列性 並行性をもつプログラムが時系列的に並列に動作する 並行性のあるプログラムの
複数のCPU/Coreで実行される 並列実行 並行性のあるプログラムの 非並列実行 並列性があるほうが 実行時間が短い
7.
並列性を上げるには? • 並列性を下げる要因 =
スレッドの同期処理 – クリティカルセクション – 待ち合わせ Fork/Join Frameworkが – 並列度(Core数、スレッド数) 解決しようとしているのはこ れ!
8.
Executorでは…
クリティカルパス 赤いとこ全部待ち時間
9.
細粒度のタスク 細粒度のタスクをうまくCPU/Coreに割り振ってあげれば 効率的に使うことが出来る。 でも、Executorではそれを自分でうまくスケジューリングして あげなければならないし、オーバーヘッドも大きい そこで Fork/Join Framework
ですよ!!!
10.
タスクの細分化 タスクを細分化するには分割統治法
あのフィボナッチだって、クイックソートだって 分割統治 Fork/Join Framework java.util.concurrent.RecursiveTask<V> java.util.concurrent.RecursiveAction 分割統治といえば誰もがアルゴリズムの教科書で最初に習う 再帰処理ですよね!!!
11.
サンプル(フィボナッチ数) サクラバ大先生の連載から拝借 http://itpro.nikkeibp.co.jp/article/COLUMN/20110527/360769/?ST=de velop&P=3
12.
Work Stealingアルゴリズム 分割統治アルゴリズム
分割 (Fork) 統治 (Join) タスクキュー(Deque) Pop CPU1 Fork Push CPU2 CPU3 Steal CPU4
13.
ParallelAray extra166yではParallelArrayが提案されています。(Java8で登場) またまたサンプルを拝借して… http://itpro.nikkeibp.co.jp/article/COLUMN/20110627/361738/?ST=d evelop&P=4
14.
まとめ • Fork/Join Frameworkは細粒度のタスクを並
列に実行するのに適しています。 – Work Stealingアルゴリズム • タスクを細粒度に分割するには分割統治 アルゴリズムがあります。 • Java8ではParallelArrayも登場。 • ParallelArrayはLambdaによって使いやすく なる。
Jetzt herunterladen