Metodi statici su un contesto web

3

Che cosa accade quando le richieste contemporanee chiamano lo stesso metodo Java statico in esecuzione su un server delle applicazioni?

Supponiamo che un metodo eseguito impieghi 2 secondi e riceva 100 chiamate in un dato secondo. Il metodo stesso non leggere / scrivere lo stato esterno.

Potrebbe essere meglio lasciare che sia invece un metodo di istanza?

    
posta vemv 19.12.2011 - 12:12
fonte

4 risposte

5

Se il metodo non accede / modifica uno stato esterno, è in effetti una funzione. Non c'è niente di sbagliato in questo (alcuni linguaggi di programmazione sono basati interamente su funzioni) e non causerà alcun problema di prestazioni (almeno non dovuto all'essere statici).

    
risposta data 19.12.2011 - 12:19
fonte
2

Il tuo metodo cambia stato (ad es. è mutabile)? In caso contrario, probabilmente sei abbastanza sicuro di renderlo un metodo statico. Tuttavia, è sempre meglio provare queste cose.

Quando arrivi alla parte di test, prova a simulare i thread simultanei usando JMeter .

    
risposta data 19.12.2011 - 12:21
fonte
1

statico, per quanto posso spiegare, significa che qualunque cosa sia dichiarata con static sarà presente in un singolo posto in memoria come un'unica istanza per tutti, una specie di variabile o funzione condivisa.

quindi in genere non è una buona idea dichiarare una variabile statica che non è costante a meno che tu non abbia bisogno di qualcosa come un contatore globale.

Tuttavia potresti avere una funzione statica che non modifica alcun valore e accetta solo valori a restituisce altri valori, in tal caso non vedo alcun problema lì.

Tuttavia, come ha spiegato Martijn è sempre meglio testare la sottoclasse del codice. Ad esempio, non so cosa aspettarmi dalle funzioni statiche che chiamano oggetti

    
risposta data 20.12.2011 - 15:48
fonte
1

Le richieste concorrenti dovrebbero essere gestite dal tuo server web. Non dovrebbe esserci differenza tra l'accesso a una funzione statica e una funzione istanziata, a condizione che nessuno stato venga modificato esternamente. Ogni richiesta chiamerà ed eseguirà semplicemente la funzione indipendentemente dal fatto che un'altra chiamata esistente sia in esecuzione. Credo che l'unica preoccupazione dovrebbe essere se il tuo server può gestire il carico di chiamare quella funzione 100 volte all'interno di un secondo.

    
risposta data 20.12.2011 - 16:40
fonte

Leggi altre domande sui tag