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

レッスン

  • レビュー
  • 私たちについて
開始
学習開始
今すぐ学習を始める
  • 学習の進捗
  • コース
  • クエストマップ
  • レッスン
  • Observer パターン(オブザーバー)

    JAVA 25 SELF
    レベル 50,レッスン 3
    振る舞いに関するデザインパターン「オブザーバー」: 役割は Subject と Observer、 addObserver/ removeObserver による購読/購読解除、そして notifyObservers メソッドで通知を配信。Java のイベントモデルとの関係を解説: button. addActionListener( listener) ; → actionPerformed() を呼び出す。具体例(温度計とエアコン、ミニカウンターとラムダ)で実践し、なぜ java.util.Observable/ Observer が非推奨になったのか、そして現代的な手法について説明します。
    利用可能
  • EDT スレッドと UI の長時間処理

    JAVA 25 SELF
    レベル 50,レッスン 4
    この講義では、UI のイベント処理用スレッド — EDT(Swing)と、その相当である JavaFX Application Thread が何か、なぜ UI コンポーネントはスレッドセーフではないのか、そして重い処理でウィンドウがなぜ「フリーズ」するのかを解説します。正しい手法として、 new Thread(...) によるバックグラウンドへのオフロード、 SwingUtilities.invokeLater や Platform.runLater による UI 更新、さらに高水準のツールである SwingWorker<T, V> および Task<V>/ Service<V> を使った進捗表示・キャンセル・エラー処理について示します。
    利用可能
  • マルチスレッド入門:なぜ必要か

    JAVA 25 SELF
    レベル 51,レッスン 0
    なぜプログラムにスレッドと並行性が必要なのか――応答性の高いインターフェースから CPU の全コア活用まで。プロセスとスレッドの違い、 JVM におけるメインスレッド main の役割、実用的なケース(UI、サーバ、ファイル処理)とリスク: race condition、 deadlock、さらに synchronized のような基本的な同期手段を解説します。 Thread を使って 2 つのタスクを並列に起動する簡単な例も示します。
    利用可能
  • スレッドの起動: Thread と Runnable、構文

    JAVA 25 SELF
    レベル 51,レッスン 1
    この講義では、Java におけるスレッドの起動を解説します。クラス Thread とインターフェース Runnable を紹介し、 start() の正しい呼び出し方と run() との違いを理解し、無名クラスやラムダ式を使い、複数スレッドの起動とライフサイクル( NEW → RUNNABLE → TERMINATED)を確認します。 Thread.currentThread()、 getName()、 join() による待機、 IllegalThreadStateException のような典型的なミスについても扱います。
    利用可能
  • スレッドの状態とライフサイクル

    JAVA 25 SELF
    レベル 51,レッスン 2
    Java におけるスレッドのライフサイクルを解説します。 Thread.State (
    NEW
    ,
    RUNNABLE
    ,
    BLOCKED
    ,
    WAITING
    ,
    TIMED_WAITING
    ,
    TERMINATED
    ) から各状態間の遷移まで。 Thread.sleep(...)、 join()、 interrupt() を使ったスレッド制御、 isAlive() と getState() による状態の診断、さらに stop()/ suspend()/ resume() のような古いメソッドを避ける方法まで扱います。最後に、実践的なヒントとよくある誤りも紹介します。
    利用可能
  • スレッドのパラメータと優先度

    JAVA 25 SELF
    レベル 51,レッスン 3
    クラスが実装する Runnable のコンストラクタ経由で、スレッドにパラメータを安全に渡す方法、ラムダ式が適切な場面、そしてフィールドを final にすべき理由。スレッドの優先度も解説します: setPriority/ getPriority メソッド、 Thread.MIN_PRIORITY、 Thread.NORM_PRIORITY、 Thread.MAX_PRIORITY といった定数と、それらがスケジューラ(scheduler)に与える影響。さらに—コンストラクタや setName/ getName によるスレッドの命名、実践的な例、そして典型的なミス(共有の Runnable、セッター、優先度への過度な期待)。
    利用可能
  • 競合状態(race condition)

    JAVA 25 SELF
    レベル 51,レッスン 4
    この講義では、競合状態とは何かを解説します。複数のスレッドが同時に共有データへアクセスし、その結果がスケジューリング順序に依存する状況です。インクリメント counter ++ を例に、なぜこの操作が原子的ではなく、どのようにインクリメントが失われるのかを示します。銀行口座の実例、プロダクションでの影響、そして防御手法としての synchronized、 java.util.concurrent.atomic(例: AtomicInteger)の原子型、さらにイミュータブル設計についても扱います。最後は「典型的なミス」セクションで、なぜ Thread バグはテストでめったに捕まらず、なぜそれを Thread. sleep( 1) で「治す」のが無意味なのかを説明します。
    利用可能
  • 共有リソースと同期: アクセスの問題

    JAVA 25 SELF
    レベル 52,レッスン 0
    この講義では、マルチスレッドアプリケーションにおける共有リソースとは何か、なぜレースコンディション(race condition)や「更新の消失」が起こるのか、そして synchronized でデータをどう守るかを扱います。同期の基本手法(メソッドとブロック)を解説し、 java.util.concurrent の現代的なツール群( Lock、 ReentrantLock、 Semaphore など)について触れ、カウンタのインクリメントの実例や典型的なミス( i ++ の非原子的性質、誤ったロック対象、 volatile に関する誤解)を見ていきます。
    利用可能
  • synchronized, volatile: 構文と適用

    JAVA 25 SELF
    レベル 52,レッスン 1
    マルチスレッドの実践講義: キーワード synchronized(ブロックとメソッド、オブジェクトのモニター、クラスレベルのロック ClassName.class)がどのように動くか、 volatile による変更の可視性が操作の原子性とどう違うか、なぜ boolean フラグは volatile にするのが便利で、インクリメント count ++ には同期が必要なのかを解説します。どの場面で synchronized を選び、どの場面で volatile を選ぶべきかを比較し、典型的なミスも取り上げます。
    利用可能
  • ReentrantLock と ReadWriteLock: 違いと例

    JAVA 25 SELF
    レベル 52,レッスン 2
    古典的な synchronized による同期と、パッケージ java.util.concurrent.locks にあるより柔軟なプリミティブ、 ReentrantLock と ReadWriteLock の実践的な比較。ロックを明示的に制御する方法( lock()/ unlock()、タイムアウト付き tryLock())、 ReentrantReadWriteLock で読み取りをスケールさせる方法、「フェアネス」( fair モード)とは何か、各ツールの適材適所、そして頻出のミスについて解説します。
    利用可能
  • ミューテックスとセマフォ:構文と課題

    JAVA 25 SELF
    レベル 52,レッスン 3
    この講義では、Java における主要な同期プリミティブを解説します。クリティカルセクションを synchronized やクラス ReentrantLock(メソッド lock()/ unlock()、 try- finally 構文)で保護する方法、さらに Semaphore(メソッド acquire()/ release())で並行度を制限する方法を扱います。ミューテックスとセマフォを表で比較し、実践的なケース(銀行、接続数に上限のあるサーバー)や、 デッドロックや性能低下を招く典型的なミスも取り上げます。
    利用可能
  • 同期でよくあるミスの解説

    JAVA 25 SELF
    レベル 52,レッスン 4
    Java のマルチスレッドでよくあるミスを実践的に解説: ReentrantLock や Semaphore での unlock()/ release() の呼び忘れ( try- finally で解決)、 synchronized の対象モニターの選定ミス、相互待ち(deadlock)とロック取得順、過剰な同期、さらに volatile の適用範囲と AtomicInteger への置き換え。サンプル、ヒント、わかりやすい比喩で、コードが固まって動かなくならないようにする。
    利用可能
  • 1
  • ...
  • 22
  • 23
  • 24
  • 25
  • 26
  • ...
  • 30
学ぶ
  • 登録
  • 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