Las preguntas lo dicen todo, solo me pregunto, en una entrevista, qué dirías cuando te pregunten: "¿Qué significa prácticamente que Hashtable o Vectors estén sincronizados?"¿Qué significa cuando decimos que Hashtable o Vector está sincronizado?
Respuesta
Prácticamente esto significa dos cosas:
- no se utilicen a menos que se les va a compartir entre los hilos (si no sólo tiene que utilizar HashMap o ArrayList).
- Si los está compartiendo entre subprocesos, compruebe que las políticas de sincronización que implementan realmente son suficientes para hacer que su programa sea seguro (porque la existencia de alguna sincronización es una pequeña indicación del comportamiento simultáneo general de una clase).
wow, esta es una buena explicación +1 – ant
significa que el acceso a la matriz/colección subyacente (añadir, obtener, configurar, poner, quitar, etc..etc ..) es todo sincronizado. No puede tener lugar simultáneamente. Prácticamente, todo el acceso se ha establecido en una cola FIFO (primero en entrar, primero en salir). Solo y si solo si no hay nadie (léase: ningún otro hilo) que esté accediendo actualmente al objeto, entonces el siguiente (hilo) en la cola puede acceder a él.
Sin embargo, varios hilos pueden contener una referencia a una colección sincronizada, ¿correcto? Es solo que solo uno de esos hilos puede (agregar, obtener, configurar, poner, eliminar, etc., etc.) a la misma hora, ¿correcto? –
Eso es correcto. La sincronización está en el * acceso *. – BalusC
'cola de primero en entrar primero en salir (FIFO)'. No. Queueing no está especificado. No se especifica quién obtiene el próximo acceso: probablemente el hilo de espera de mayor prioridad. – EJP
Solo un hilo de ejecución puede cambiar el estado del contenedor en un momento dado.
Si el contenedor no estaba sincronizado, el hilo de ejecución múltiple podría intentar cambiar el estado del contenedor al mismo tiempo. Por supuesto, esto terminaría con el estado interno del contenedor dañado, es decir, no lo que desea.
Los contenedores originales de Java, p. java.util.Vector y java.util.Hashtable, todos fueron sincronizados por razones de seguridad. Pero la desventaja de sincronizar el acceso por defecto es que los casos de uso donde la sincronización no es necesaria sufrirán la penalización del rendimiento de la sincronización. Entonces ahora Java también se envía con contenedores no sincronizados, p. ArrayList y HashMap.
Significa que solo un hilo puede acceder a él a la vez.
Esto puede ser un problema si lo usa en un programa que usa solo un subproceso, porque el proceso de verificar quién posee el monitor (qué subproceso intenta usar) se seguirá realizando desperdiciando tiempo de procesamiento valioso.
Incluso usarlos con uno o más subprocesos puede ser menos eficaz que utilizar una versión no sincronizada y sincronizar solo las partes más peligrosas.
- 1. ¿Qué significa cuando decimos que una ArrayList no está sincronizada?
- 2. ¿Qué significa sincronización en el contexto de Vector/ArrayList?
- 3. ¿Qué significa "sincronizado" en Java?
- 4. Uso Hashtable, Vector o HashMap o ArrayList en Java
- 5. ¿Qué significa exactamente cuando $ _FILES está vacío?
- 6. ¿Qué significa que el botón está armado?
- 7. ¿Qué significa cuando MySQL está en el estado "Enviando datos"?
- 8. Diferencias entre .Net Hashtable, Java Hashtable y HashMap
- 9. Log4j: ¿está sincronizado para llamadas multiproceso?
- 10. ¿Qué significa decir que un tipo está "encuadrado"?
- 11. ¿Qué está haciendo Eclipse cuando dice que está actualizando índices?
- 12. Cómo detectar si el iphone está sincronizado cuando la aplicación no se está ejecutando
- 13. apropiante un hilo que se está ejecutando sincronizado método
- 14. Hashmap y hashtable en el entorno multiproceso
- 15. qué significa cuando dicen que http es stateless
- 16. ¿Qué significa 0LL o 0x0UL?
- 17. ¿Qué significa: = significa cuando se usa en pseudocódigo?
- 18. ¿Está 'sincronizado' realmente solo el azúcar sintáctico?
- 19. ¿Qué significa "INFO: TLD omitido. URI ya está definido" significa?
- 20. ¿Volátil o sincronizado para el tipo primitivo?
- 21. Hashtable Hashtable evitar el hashcode negativo
- 22. Subversión: ¿qué significa que "la ruta de destino no existe" cuando la fusión significa?
- 23. Hashtable en C++?
- 24. ¿Qué significa "comprometer sus cambios o esconderlos"?
- 25. ¿Qué significa * RECURSION * cuando imprime $ GLOBALS?
- 26. ¿Qué significa una sola | o & mean?
- 27. ¿Qué significa "O (1) access time"?
- 28. ¿Qué significa la opción -O- para wget?
- 29. ¿Qué significa serializar datos o un objeto?
- 30. ¿Qué significa O (log (log (n)))) - competitivo?
Me gustaría responder que significa que estás utilizando clases de casi una década sin una buena razón y en su lugar debes usar los equivalentes modernos del marco de recopilación. Sin embargo, eso está más allá del punto de la pregunta. – Esko
¿Puede nombrar algunos equivalentes modernos – zengr
'HashMap' y' ArrayList' respectivamente. – BalusC