El uso del patrón singleton hará que mi aplicación sea más lenta si varios usuarios están trabajando en ella simultáneamente

Estoy enfrentando problemas para entender el uso en Singleton. Entiendo que al usar el patrón singleton una vez que se crea una instancia de una clase y se comparte entre todos los usuarios. Sin embargo, ¿esto no hará que una aplicación sea lenta para los usuarios en múltiples (digamos que algunos miles de usuarios) están usando ese recurso en un momento?

Por ej. Si una de mis clases de servicio "Sendmail" es un singleton, solo se creará una instancia de esa clase en el contenedor IOC. Ahora esta instancia se compartirá con todos los usuarios actuales que usan ese recurso. Ahora, si varios usuarios intentan enviar correos electrónicos al mismo tiempo, todas las solicitudes esperarán en la cola ya que solo se crea una instancia de Sendmail, ¿no hará esto que los usuarios esperen para enviar su correo electrónico? Esta será una experiencia muy pobre para los usuarios. Lo mismo ocurre con la conexión de la base de datos. Entonces, ¿por qué se recomienda usar Singleton sobre el prototipo?

Por favor, ayúdenme a aclarar mi confusión. Gracias por adelantado.

Respuesta 1

No, el patrón Singleton no ralentiza la aplicación. Básicamente, crea un solo objeto y lo hace disponible cada vez que se solicita.

Pero cuando se trata de múltiples usuarios que acceden a datos / recursos al mismo tiempo, este es el concepto de concurrencia. Si implementa algunas técnicas de control de concurrencia, el procesamiento de datos / recursos podría ralentizarse.

Nota: Todo depende del desarrollador de cuán horrible es el código que está escribiendo.

Respuesta: 2

No soy un experto, pero alguien corregirá si me equivoco. Primero, Sigleton es una instancia para la aplicación. Si abre su aplicación dos veces, mientras trabaja por separado, incluso si se están comunicando. En segundo lugar, Sigleton es un patern para el desarrollo. Realmente no afecta el rendimiento de su aplicación mientras se compila. Y, por último, unos pocos miles de solicitudes al mismo tiempo no son muy pesadas para algo tan simple como una conexión, bloqueará más la comunicación que el procesamiento.

Nota: La conexión a la base de datos es un ejemplo típico de sigleton. No es una pregunta estúpida, pero puedes adivinar que si todos la usan, puede ser una forma optimizada.

Respuesta: 3

Entonces, tengo un programa que crea un archivo PDF de salida que quiero que se pueda leer (mediante mi programa) al insertar metadatos en él. Y eso es una gran cantidad de datos. Me sugirieron hacer esto ...

Tengo una barra de progreso en la clase a.java (en forma). Necesito alcanzarla desde la clase b.java. El nombre de mi barra de progreso es jprog. (Lo pongo en forma desde el palet) ¿Cómo puedo configurar pública mi barra de progreso? No puedo encontrarlo en ...

Tengo una tarea y me gustaría averiguar qué patrón es mejor utilizar. La tarea es bastante sencilla: desarrollar una aplicación que consuma varios archivos de texto que difieren de ...

He mostrado las ubicaciones en el mapa con imágenes de marcador, pero ahora quiero conectar las ubicaciones por líneas punteadas, en ubicaciones de la misma línea. Por favor dame alguna idea ...