1.6. トランザクションとスレッドとの関係


トランザクション処理を理解するには、トランザクションとスレッドの基本関係を把握することが重要です。トランザクションはスレッド別になります。つまり、トランザクションが開始されると、特定のスレッドに割り当てられます。(技術的には、トランザクションコンテキスト オブジェクトが作成され、現在のスレッドに関連付けられます)。スレッドのすべてのアクティビティーは、この時点からトランザクションが終了するまで、このトランザクションスコープ内で発生します。他のスレッドのアクティビティーが、このトランザクションのスコープ内に入ることは ありません。ただし、他のスレッドのアクティビティーが、他のトランザクションのスコープ内に入る可能性はあります。

トランザクションとスレッドのこの関係は、以下のようになります。

  • 各トランザクションが別々のスレッドで作成されている限り、アプリケーションは複数のトランザクションを同時に処理できます
  • トランザクション内でサブスレッドを作成すること に注意してください。トランザクションの途中で、たとえば threads() Camel DSL コマンドを呼び出して、新しいスレッドプールを作成する場合、新しいスレッドは元のトランザクションのスコープに含まれません
  • 前述のポイントで示した理由と同じで、新しいスレッドを暗黙的に作成する処理ステップに注意してください
  • トランザクションスコープは通常、ルートセグメント間では継承されません。つまり、1 つのルートセグメントが JoinEndpoint で終わり、別のルートセグメントが JoinEndpoint で始まる場合、これらのルートセグメントは通常同じトランザクションに属し ません。ただし、例外があります。
注記

一部の高度なトランザクションマネージャーの実装では、自由にトランザクションコンテキストをスレッドに対してデタッチしたり、アタッチしたりできます。たとえば、これにより、トランザクションコンテキストを別のスレッドに移動できます。場合によっては、1 つのトランザクションコンテキストを複数のスレッドに割り当てることもできます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.