CodeGym
学習
コース
課題
アンケート & クイズ
ゲーム
ヘルプ
スケジュール
コミュニティ
ユーザー
フォーラム
チャット
記事
成功事例
アクティビティ
レビュー
サブスクリプション
ライトテーマ

レッスン

  • レビュー
  • 私たちについて
開始
学習開始
今すぐ学習を始める
  • 学習の進捗
  • コース
  • クエストマップ
  • レッスン
  • Structured Concurrency

    JAVA 25 SELF
    レベル 58,レッスン 0
    Structured Concurrency は、雑然としたスレッドの集まりを制御されたタスク階層へと変えます。仮想スレッド内で StructuredTaskScope を使ってサブタスクを起動し、 join() で待機し、 throwIfFailed() でエラーを一元的に処理し、 resultNow()/ result() で結果を取得します。終了ポリシーの ShutdownOnFailure と ShutdownOnSuccess を解説し、 CompletableFuture と比較し、HTTP アグリゲーターの例や、構造化並行性を使う際の典型的な落とし穴も見ていきます。
    利用可能
  • タスクのキャンセルとスタック全体へのタイムアウト伝播

    JAVA 25 SELF
    レベル 58,レッスン 1
    Java で長時間およびブロッキングする処理を正しくキャンセルする方法: Thread.interrupt() による協調的割り込み、 Future.cancel() によるタスクのキャンセルと CancellationException の挙動、 CompletableFuture におけるタイムアウトとキャンセル( orTimeout、 completeOnTimeout)、 StructuredTaskScope を用いた構造化並行性、共通のデッドライン(time‑budget)とスタック下方向へのタイムアウト伝播( Instant/ Duration および Scoped Values を含む)。ブロッキングIOでの実務と典型的な誤りを解説します。
    利用可能
  • 高水準シンクロナイザ

    JAVA 25 SELF
    レベル 58,レッスン 2
    この講義では、 java.util.concurrent にある高水準のシンクロナイザ、 CountDownLatch、 CyclicBarrier、 Phaser、 Exchanger を解説します。 await()/ countDown() でタスクの開始・終了を調整し、 await() で再利用可能なフェーズとバリアアクションを構築し、 register()/ arriveAndAwaitAdvance()/ arriveAndDeregister() で「オーケストラ」の動的な参加者を管理し、 exchange() でペア間のデータ交換を行います。実践では多数のワーカーの一斉スタートや「ゲームのティック」を実装し、典型的な落とし穴も扱います: CountDownLatch の一度きりの性質、 BrokenBarrierException の処理、正しい deregister() など。どこでも wait()/ notify() の痛みなしで進めます。
    利用可能
  • StampedLock と低競合カウンタ

    JAVA 25 SELF
    レベル 58,レッスン 3
    ReentrantReadWriteLock や古典的な ReadWriteLock が高負荷下で頭打ちになり始めたとき、楽観的読み取りを備えた StampedLock が役に立ちます。 tryOptimisticRead + validate の組み合わせにより、書き込みがまれな状況では「ほぼ無料」の読み取りが可能です。ロックモード、スタンプの扱い、再入不可の制約を整理し、 ReentrantReadWriteLock と比較します。さらに低競合カウンタである LongAdder と LongAccumulator を取り上げ、なぜ競合時に AtomicLong を上回るのかを説明します。最後は実践として、読み取り優勢のキャッシュとミニベンチマークで締めくくります。
    利用可能
  • Java Memory Model (JMM)

    JAVA 25 SELF
    レベル 58,レッスン 4
    Java Memory Model における可視性と操作の順序付けの規則を解説します。関係 happens-before が何を意味するか、 volatile、 synchronized、final フィールド( final)がいつ・どのように役立つか、そしてそれらがないと「ステール」なデータがなぜ生じるのかを説明します。オブジェクトの安全な公開、正しい double-checked locking、 VarHandle による低レベルアクセス、偽共有の影響とアノテーション @Contended、さらに Thread.start()/ Thread.join()、 Future.get()、マイクロベンチマーク JMH に関する実践的な注意点も取り上げます。
    利用可能
学ぶ
  • 登録
  • Javaコース
  • 課題のサポート
  • 料金
  • ゲームプロジェクト
  • Java構文
コミュニティ
  • ユーザー
  • 記事
  • フォーラム
  • チャット
  • 成功事例
  • アクティビティ
  • アフィリエイトプログラム
会社情報
  • 私たちについて
  • 連絡先
  • レビュー
  • プレスルーム
  • CodeGym for EDU
  • よくある質問
  • サポート
CodeGymCodeGym は、ゼロからJavaプログラミングを学ぶためのオンラインコースです。このコースは初心者がJavaを習得するのに最適です。即時検証付きの1200以上の課題と、Java基礎理論の必要な範囲を含みます。学習の成功を支援するために、クイズ、コーディングプロジェクト、効率的な学習に関するコンテンツ、Java開発者のキャリアに関する機能など、一連のモチベーション機能を導入しています。
フォローする
インターフェース言語
English Deutsch Español हिन्दी Français Português Polski বাংলা 简体中文 मराठी தமிழ் Italiano Bahasa Indonesia 繁體中文 Nederlands
日本語
한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
「プログラマーは生まれるのではなく、育てられる」 © 2026 CodeGym
MastercardVisa
「プログラマーは生まれるのではなく、育てられる」 © 2026 CodeGym