0

こんにちは。この質問には、スレッド、クライアント、Netty、および Ning が含まれます。

環境

Ning ライブラリは、非同期 HTTP リクエスト ツールであり、リクエストを作成し、キューに入れ、非同期で処理することができます。以下に貼り付けた JBoss/Netty コードなど、一部のライブラリに依存しています。

問題

私は最近、JBoss/NettyExecutorUtilクラスのこのコードによってスローされたスレッド終了例外に出くわしました。

このクラスは、基本的に Netty でスレッドを終了するためのユーティリティのようです。

このメソッドは、クライアントの応答のハンドラー内で HttpClient を閉じようとしていたという事実により、使用していた Web クライアント (Ning を使用) でバグを引き起こしていました。

質問

このコード ブロックが回避しようとしているデッドロックの意味は何ですか? 詳細については、このコード urlでクラスを確認できます。

// Check dead lock.
    final Executor currentParent = DeadLockProofWorker.PARENT.get();
    if (currentParent != null) {
        for (Executor e: executorsCopy) {
            if (e == currentParent) {
                throw new IllegalStateException(
                        "An Executor cannot be shut down from the thread " +
                        "acquired from itself.  Please make sure you are " +
                        "not calling releaseExternalResources() from an " +
                        "I/O worker thread.");
            }
        }
    }
4

1 に答える 1