私は、共有データにアクセスし、同期化されたと宣言されているメソッドAを持つトップレベルサービスを持っています。メソッドAは内部クラスのメソッドBを呼び出し、内部クラスの一部の共有データにアクセスします。メソッドが同期メソッド内から呼び出された場合、内部メソッドは共有可能な変更可能なデータへのスレッドセーフなアクセスですか?
BがトップレベルサービスのAPIからのみ呼び出され、公開されていないことを保証できる場合でも、Bをsynchronizedとして宣言する必要はありますか?または、Bのスレッドセーフであることを保証するのに十分なAの同期宣言ですか?
Bの同期を宣言する際のパフォーマンス上のペナルティはありますか?
なります
と同じですあなたのデータが共有されている場合、それは複数のスレッドによってアクセスされます。可視性が必要です。 –