¿Metodos static sincronizados?
Hola
Una duda me corroe. Si los métodos static son mantenidos como una única instancia para todo el que los use, ¿hay que sincronizarlos cuando vaya a acceder desde diferentes hilos?
¿La JVM no se preocupa de eso?
Gracias
Una duda me corroe. Si los métodos static son mantenidos como una única instancia para todo el que los use, ¿hay que sincronizarlos cuando vaya a acceder desde diferentes hilos?
¿La JVM no se preocupa de eso?
Gracias
Hola:
Lo de sincronizar no tiene que ver con que el código sea común o no.
Hay que sincronizar si hay un grupo de operaciones que deben realizarse sin intromision de otro hilo para garantizar que salen bien, sea o no el método estático.
Por ejemplo, imagina que tienes una lista y hay un hilo que va a escribir en pantalla el contenido de la lista. Normalmente se hace un bucle para el numero de elementos de la lista y se van escribiendo
Imagina que hay ademas otros hilos que añaden o borran elementos de la lista. Es posible que mientras el primer hilo esta en su bucle, estos otros se dediquen a borrar o añadir elementos. El resultado es que el bucle puede fallar.
Este es el motivo de sincronizar. Mientras el hilo esta escribiendo la lista, ningún otro hilo deberÃa modificarla, independientemente de que se haga con métodos estáticos o no.
Se bueno.
Lo de sincronizar no tiene que ver con que el código sea común o no.
Hay que sincronizar si hay un grupo de operaciones que deben realizarse sin intromision de otro hilo para garantizar que salen bien, sea o no el método estático.
Por ejemplo, imagina que tienes una lista y hay un hilo que va a escribir en pantalla el contenido de la lista. Normalmente se hace un bucle para el numero de elementos de la lista y se van escribiendo
Imagina que hay ademas otros hilos que añaden o borran elementos de la lista. Es posible que mientras el primer hilo esta en su bucle, estos otros se dediquen a borrar o añadir elementos. El resultado es que el bucle puede fallar.
Este es el motivo de sincronizar. Mientras el hilo esta escribiendo la lista, ningún otro hilo deberÃa modificarla, independientemente de que se haga con métodos estáticos o no.
Se bueno.
Pero esa lista. ¿SerÃa una variable de clase? Es decir, cada hilo que accede al método estático tendrá las variables internas privadas y solo se comparten las variables de clase a las que esta acceda, o las variables dentro del método estático también se comparten.
Por lo que he leido por ahà parece ser que los métodos estáticos son privados, ya que dicen que se usan para clases de utilidad (que es lo que yo quiero hacer). Me imagino que el código estará siempre en memoria, pero que las variables son creadas nuevas para cada hilo que lo usa.
¿Se carga esa clase la primera vez que la llamas y luego permanece siempre en memoria? Lo digo por usarla en una aplicación web y que no ralentizase las peticiones cada vez que alguien la usa.
¿Se carga esa clase la primera vez que la llamas y luego permanece siempre en memoria? Lo digo por usarla en una aplicación web y que no ralentizase las peticiones cada vez que alguien la usa.