[英]Worklight: Performance of calling java static method vs object creation
我需要建議還是將自定義java方法設置為靜態方法,還是通過Adapter通過java對象進行訪問?
我的情況是:成千上萬的用戶正在進行交易,每個用戶都一次又一次地訪問相同的方法,而只是更改一些特定於該用戶或交易的值。
現在,如果我將它們設為靜態方法,那么它將對用戶造成問題,因為我們知道適配器調用是異步的。...因此,如果多個用戶同時調用同一方法,則將導致將不同的值返回給彼此?
或者,如果我通過首先聲明該類對象然后訪問方法,提供參數來訪問所有自定義Java方法,那么以這種方式,當多個用戶同時訪問同一方法時,他們將獲得正確/相關的數據?
從性能的角度來看,哪種方法是好的,而靜態方法卻給用戶帶來了錯誤的數據.....一個用戶的數據給了另一個用戶,其他用戶的數據給了另一個人。
感謝Abdul Ahad
------------我的代碼就像-
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)
};
}
我相信您正在將靜態方法與靜態字段混淆。 靜態方法只是與對象的任何特定實例都沒有關聯的代碼-基本上,任何不使用this
或super
引用的方法都可以成為靜態方法的候選方法,前提是它們不會覆蓋另一種方法且不希望成為靜態方法。覆蓋。 與“普通”方法相比,靜態方法與多線程無關。
另一方面,靜態字段根據定義在所有線程之間共享,並且對它們的訪問應該像使用任何共享資源一樣受到保護。 不論方法本身是否是靜態的, 任何使用靜態字段的方法都應檢查並發問題。
就性能而言,有軼事證據表明,與普通的虛擬方法相比,靜態方法可能會提高性能,但是老實說,在探查器告訴我之前,我不會擔心它。 過早的優化是萬惡之源...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.