私は毎晩自分のメールサーバーをポーリングするSpring Beanを宣言しました。メールがある場合は、メールを取り出し、添付ファイルを抽出しようとします。これらのファイルはアップロード者に送信され、安全に保管されます。アップローダはSpring Beanとして宣言されています。 3番目のBeanは、電子メールの送信者をファイルのファイル名に関連付けてDBに格納します。デフォルトのBeanスコープをシングルトンとして使用すると、同時呼び出しが発生すると悪くなることはありませんか?
同時にいくつかの人が電子メールを送信しようとしたときに、一気に厄介なことが起こったことが判明しました。 DBのレコードに間違ったファイル名があります。ファイル名がまったく得られなかった人もいます。
この問題は、デフォルトでBeanのスコープがシングルトンになっているという結果に起因しています。これは、スレッドの束がおそらく1つの同じインスタンスを同時に混乱させていることを意味します。問題はこれを解決する方法です。
すべての機密方法を同期させると、すべてのスレッドがスタックしてお互いを待つことになります。これは、マルチスレッドの考え方全体には一種です。どちらかの本当に良いではありませんそれらのそれぞれの新しいインスタンスを作成しようとしている「要求」に豆をスコープ一方
、我々はメモリの消費量、およびスレッドのスケジューリング
について話す場合私は混乱している。私は何をすべきか?
あなたのメソッドを同期する必要がありますが、もっと重要なこと呼び出されたメソッドが他のスレッドが依存するインスタンスデータを変更していないことを確認する必要があります。私はあなたのコードを提供していないので推測していますが、おそらく単純なメソッドの同期以上のものです。データを上書きするというシステム上の問題があるようです。 –