私の名前はGolovach Ivanです。特別なコースウェビナー「Javaでのマルチコアプログラミング」を行うのは2回目です。 この記事では、コースプログラムと、Javaでのマルチスレッド化に最も役立つリンクを提案します。
オンライン教育プラットフォームudemy.comでScala for Java Developersコースも教えています(Coursera / EdXに似ています)。
コースの概要:9月1日に始まり、1週間に2回(月曜日から木曜日)19.00-22.00(モスクワ時間)にウェビナーで実施されます。
1.モジュール#1:ハードウェアと新しいJMMの間
1.1モジュールプログラム
1.2モジュールに関する資料
2.モジュール#2:java.util.concurrent
2.1モジュールプログラム
2.2モジュールの資料
3.モジュール#3:Fork / Join Framework + Parallel Streams
3.1モジュールプログラム
3.2モジュールの資料
4.モジュール#4:「非古典的なアーキテクチャ」
4.1モジュールプログラム
4.2モジュールの資料
モジュール#1:ハードウェアと新しいJMMの間
モジュールプログラム
- 「鉄」
- 最新のプロセッサ、キャッシュのアーキテクチャ
- メモリバリア、読み取り/書き込みの並べ替え、キャッシュコヒーレンスプロトコル
- 「数学」/ Javaメモリモデル
- 新しいJMM-指紋の説明
- Thread.start()/ join()、volatile、final、CAS、lazySet、weakCompareAndSet、jucのクラスが保証するもの
- 新しいJMM形式仕様:エッジの前に起こる、コミットメントプロトコル
- プリミティブ/構造
- ダブルチェックロック(破損)、安全な公開
- synchronized + Object.wait()/ notify()/ notifyAll()-HotSpotに実装されている使用方法、保証内容
- デッカーのアルゴリズム、ピーターソンのアルゴリズム、Lamport Bakery algotithmを販売しています。
モジュールの資料
- 「鉄」に関する文献(開始)
- ハードウェアに関する資料(深刻な人向け)
- 「メモリの一貫性とキャッシュの一貫性に関する入門書」 -プロセッサにキャッシュの一貫性を実装するための200ページのチュートリアル
- 「すべてのプログラマがメモリについて知っておくべきこと」 -メモリデバイスに関する1ページのマニュアル(レジスタ、キャッシュ、一貫性、DMA、アトミック)
- 「NehalemプロセッサとNehalem-EP SMPプラットフォームのアーキテクチャ」 -まあ、または単に最新のIntel Nehalemの説明。
- Javaメモリモデルに関する資料(初心者向け)
- JSR 133(Java Memory Model)FAQ + 翻訳 -簡単な概要。
- Doug LeaのJSR-133クックブック -ハードウェアコンパイラによるJMMの実装方法。
- ブライアンゲッツ、「ダブルチェックロック:賢いが壊れている」
- 「ダブルチェックロックが壊れています」宣言
- Javaメモリモデルに関する資料(深刻な人向け)
- Java Memory Modelは、New JMMの正式かつ正確な記述です。
モジュール#2:java.util.concurrent
モジュールプログラム
- マルチスレッドコレクション
- BlockingQueue-s
- ConcurrentMap-s:ConcurrentHashMap、ConcurrentSkipListMap
- 書き込み時の構造:CopyOnWriteArrayList、CopyOnWriteArraySet
- 「シンクロナイザー」
- ロック、条件、ReentrantLock、ReentrantReadWriteLock、セマフォ
- CountDownLatch、CyclicBarrier、Exchanger、Phaser
- スレッドプール+未来
- エグゼキューター、ExecutorService、ThreadPoolExecutor、ScheduledExecutorService、ScheduledThreadPoolExecutor
- callable、future、jucFutureに欠けているもの
- カーネルjuc:AbstractQueuedSynchronizer + LockSupport
- JucAQS内部ユニット
- jucAQS + LockSupportでのプリミティブの構築
モジュールの資料
- java.util.concurrentに関する文献(開始用)
- Javaチュートリアル:並行性
- パッケージjava.util.concurrentの説明
- javadoc:java.util.concurrent.locks.Lock
- javadoc:java.util.concurrent.locks.Condition
- javadoc:java.util.concurrent.Executor
- java.util.concurrent.ExecutorService
- javadoc:java.util.concurrent.CountDownLatch
- java.util.concurrent.CyclicBarrier
- java.util.concurrent.Exchanger
- java.util.concurrent.Phaser
- java.util.concurrent.Semaphore
- java.util.concurrentに関する文献(深刻な人向け)
モジュール#3:Fork / Join Framework + Parallel Streams
モジュールプログラム
- フォーク/結合フレームワーク
- 再帰的並列化のスタイルで問題を解決する
- イディオムと典型的なタスク
- フォーク/参加フレームワーク-内部にあるもの
- 並列ストリーム
- Java 8-java.util.Streamを介したデータの操作
- java.util.Stream.parallel()-その「内部」
モジュールの資料
- フォーク/参加フレームワークの資料(初心者向け)
- Fork / Join Framework Literature(まじめな人向け)
- Doug Lea、「A Java Fork / Join Framework」 -F / Jの著者は彼の発案について語っています。
- java.util.concurrent.CountedCompleter
- パラレルストリームに関する文献(初心者向け)
モジュール#4:「非古典的なアーキテクチャ」
モジュールプログラム
- ノンブロッキングアルゴリズム
- Jucatomicパッケージ:AtomicXXX、AtomicXXXArray、AtomicXXXFieldUpdater、AtomicStampedReference、AtomicMarkableReference
- 分類:ブロッキング、ノンブロッキング、ロックフリー、ウェイトフリー、障害物なし
- メインデータ構造のノンブロッキング実装:スタック、キュー、デキュー、ハッシュテーブル、ツリーマップ
- メッセージベースのアーキテクチャ(Akka)
- あっか図書館
- 基本的なテンプレート、典型的なアーキテクチャ
- メッセージングベースのアーキテクチャの長所と短所
- ソフトウェアトランザクションメモリ(STM)
- Clojure.langライブラリ*
- トランザクションメモリアーキテクチャの長所と短所
- 永続的なデータ構造
- 永続的なデータ構造の長所と短所
- 基本的なデータ構造の永続的な実装
- Pcollectionsライブラリ
モジュールの資料
- ノンブロッキングアルゴリズムに関する文献(開始用)
- ノンブロッキングアルゴリズムに関する文献(深刻な人向け)
- メッセージングベースのアーキテクチャに関する文献(初心者向け)
- wiki:アクターモデル
- Akka:用語、概念
- アッカ:アクターシステム
- アッカ:俳優とは何ですか?
- Akka:監視と監視
- アッカ:アクターの参照、パス、アドレス
- Akka:AkkaとJavaメモリモデル
- メッセージングベースのアーキテクチャに関する文献(深刻な人向け)
- 永続的データ構造の資料(初心者向け)
- 永続的なデータ構造に関する文献(深刻な人向け)
一般文学
前のセクションでは、特定のモジュールの特定のトピックに関するリンクを見ましたが、文字通り全体を読む価値がある3つの非常に優れた本があります。 私は「それらを章に引き込みたい」のではありませんでした。
- ブライアンゲッツ他、 「Java並行性の実践」
- Doug Lea、 「Javaでの並行プログラミング:設計原則とパターン」
- Maurice Herlihy、Nir Shavit、 「マルチプロセッサプログラミングの技術」
連絡先
コース費用
-8月9日より前に支払われた場合-375ドル
-8月16日より前に支払われた場合-$ 400
-8月23日より前に支払った場合-425ドル
-8月30日より前に支払われた場合-450ドル
Javaトレーニングをオンラインで行い( プログラミングコースはこちら) 、Java Coreコースの再設計の一環としてトレーニング資料の一部を公開しています 。 この記事では、視聴者の講義のビデオ録画をyoutubeチャンネルで見ることができます。おそらく、 チャンネルのビデオがより体系化されています 。
次の連絡先(またはコメント)ですべての質問に回答させていただきます。
スカイプ:GolovachCourses
メール:GolovachCourses@gmail.com