1

AspectJにスレッドごとにアスペクトを宣言する方法があるかどうか、またスレッドのチームごとにアスペクトを宣言する方法があるかどうかを知りたいですか?

スレッドのチームによって、私はこの例を参照しています:

特定のスレッド「X」が「N」個の新しいスレッドを作成し、「X」がこのチームのマスターになります。このチーム内の特定のスレッド「Y」が自分で新しいチームを作成した場合、「Y」がマスターになります。この新しいチームの。そこで、スレッド「X」によってチームプロデュースにアスペクト「A」を宣言し、チーム「Y」にアスペクト「A」の別の「インスタンス」を宣言できるかどうかを知りたいと思います。

4

1 に答える 1

1

AspectJはバイトコードのみを操作します。したがって、アスペクトフックを生成するときにランタイム情報(コードが呼び出されるスレッドがランタイム情報であることがわかっている)を判別できません。

スレッド固有の状態を作成する必要がある場合は、ThreadLocalを使用します。ThreadGroupの一意の状態を作成する必要がある場合は、手動で作業する必要があります。実装方法をご覧ください:ThreadGroupローカル変数。また、Javaでは親スレッドを判別できないため、ThreadGroupを使用する必要があることに注意してください。

そして、ThreadLocalの状態とアスペクトを使用したいときはいつでも、プログラムの設計について考えてください。それはあなたにとって正しい方法ですか?

于 2013-02-05T10:01:50.793 に答える