4

カスタムJavaメソッドを静的として作成するか、アダプターからJavaオブジェクトを介してアクセスするかの提案が必要ですか?

私のシナリオは、何千人ものユーザーがトランザクションを行っており、各ユーザーが同じメソッドに何度もアクセスしており、そのユーザーまたはトランザクションに固有の値を変更しているだけです。

アダプター呼び出しが非同期であることがわかっているため、それらを静的メソッドとして作成している場合、ユーザーに問題が発生します....複数のユーザーが同じメソッドを同時に呼び出すと、異なる値が返されるという問題が発生しますお互い?

または、最初にそのクラスオブジェクトを宣言してからメソッドにアクセスし、パラメーターを提供することですべてのカスタム Java メソッドにアクセスすると、複数のユーザーが同時に同じメソッドにアクセスすると、適切な/関連データが取得されますか?

パフォーマンスの観点から、どちらのアプローチが優れており、静的メソッドのアプローチを行うと、ユーザーに間違ったデータがもたらされます...あるユーザーのデータが別のユーザーに、他のユーザーが別のユーザーにデータをもたらします。

ありがとうアブドゥル・アハド

------------ 私のコードは ---

java code:

  public static String getBalanceSummaries(String userAct){
            String replyMsg="";
    try {

    replyMsg = getBalanceStatementfromMQ(userAct);

    }catch(Exception e) {}

    return replyMsg;

    }

  -----WL Adapter code:------

    function showAllBalace(userActNo){
        return{
            result: com.my.package.getBalanceSummaries(userActNo)
        };
    }
4

1 に答える 1

2

静的メソッドと静的フィールドを混同していると思います。静的メソッドは、オブジェクトの特定のインスタンスに関連付けられていない単なるコードです。基本的に、使用していないメソッドthisまたはsuper参照を使用していないメソッドは、別のメソッドをオーバーライドしておらず、オーバーライドすることを意図していない限り、静的である可能性があります。静的メソッドには、「通常の」メソッドと比較した場合、マルチスレッドに関して追加の問題はありません。

一方、静的フィールドは定義によりすべてのスレッド間で共有され、それらへのアクセスは他の共有リソースと同様に保護する必要があります。メソッド自体が静的であるかどうかに関係なく、静的フィールドを使用するすべてのメソッドは、同時実行の問題について検査する必要があります。

パフォーマンスに関する限り、静的メソッドは通常の仮想メソッドと比較してパフォーマンスが向上する可能性があるという逸話的な証拠がありますが、正直なところ、プロファイラーに指示されるまでは心配しません。時期尚早の最適化は諸悪の根源です...

于 2013-03-03T07:55:42.717 に答える