La Red de Conocimientos Pedagógicos - Conocimientos matemáticos - ¿Cuál es la diferencia entre paralelismo y mecanismo de concurrencia en JAVA?

¿Cuál es la diferencia entre paralelismo y mecanismo de concurrencia en JAVA?

¿Cuál es la diferencia entre paralelismo y mecanismo de concurrencia en JAVA?

La concurrencia y el paralelismo son dos conceptos similares pero diferentes: la concurrencia, también conocida como *paralelismo, se refiere a la capacidad de manejar múltiples actividades simultáneas; el paralelismo se refiere a dos eventos concurrentes que ocurren al mismo tiempo, lo que tiene el significado de concurrencia, mientras que concurrencia no necesariamente significa paralelismo, lo que significa que los eventos concurrentes no necesariamente tienen que ocurrir al mismo tiempo.

------------------------------------------------- ---- ------------------

¿La diferencia entre concurrencia y paralelismo es solo el momento en que ocurre?

Da un ejemplo para entender, como por ejemplo:

Supongamos que hay dos eventos A y B

Paralelos:

Si A y B Todos suceden al mismo tiempo a las 15:30. El tiempo de ejecución de A es de 5 minutos y el tiempo de ejecución de B es de 8 minutos.

Los primeros 5 minutos son paralelos, incluida la concurrencia, porque tienen lugar. todos suceden al mismo tiempo

Concurrencia:

Si A ocurre a las 15:30, el evento B ocurre después de 3 minutos de ejecución, y en los siguientes 5 minutos, A y B. son concurrentes

----------------------------------------- ------ ---------------

La concurrencia significa ejecutar en la misma CPU al mismo tiempo (no realmente al mismo tiempo, pero parece debe ser al mismo tiempo, porque la CPU necesita ejecutarse en múltiples Cambiar entre programas) para ejecutar múltiples programas.

Paralelo significa que cada CPU ejecuta un programa.

Por ejemplo, la concurrencia es como si una persona (cpu) alimentara a dos niños (programa) y se turnara para alimentar a cada persona con un bocado. En la superficie, ambos niños están comiendo.

En paralelo, dos personas están alimentando a dos niños, y los dos niños están comiendo al mismo tiempo. La diferencia entre el paralelismo y la concurrencia de jvm gc

Paralelo (paralelo): varios subprocesos de recolección de basura funcionan en paralelo, mientras que los subprocesos del usuario aún están esperando

Concurrente (concurrente): subprocesos de recolección de basura y ¿Cuál es la diferencia entre paralelismo y concurrencia en Java cuando los subprocesos de usuario funcionan simultáneamente (se ejecutan alternativamente) durante un período de tiempo?

El paralelismo y la concurrencia no tienen nada que ver con Java, este es un concepto a nivel de sistema operativo. La concurrencia es como una persona (CPU) que alimenta a n niños (programas), y se turna para alimentar a cada niño con un bocado. En la superficie, ambos niños comen en paralelo como n personas (CPU) que alimentan a n niños (programas). n niños también comen al mismo tiempo. La diferencia entre el servidor SQL y los mecanismos de control de concurrencia de Oracle

1. Apertura

1. SQL Server solo se puede ejecutar en Windows, no hay ninguna apertura y la estabilidad del sistema operativo El sistema es muy importante para la base de datos. Los productos de la serie Windows9X se centran en aplicaciones de escritorio y el servidor NT sólo es adecuado para pequeñas y medianas empresas. Además, la confiabilidad, seguridad y escalabilidad de la plataforma Windows son muy limitadas. No está tan probado como Unix, especialmente cuando se trata de bases de datos grandes.

2. Oracle puede ejecutarse en todas las plataformas principales (incluido Windows). Totalmente compatible con todos los estándares de la industria. Adopte una estrategia completamente abierta. Esto permite a los clientes elegir la solución más adecuada. Soporte total a los desarrolladores.

2. Escalabilidad y paralelismo

1. La implementación paralela y el modelo de almacenamiento del servidor SQL no están maduros y es difícil manejar el creciente número de usuarios y volúmenes de datos limitados. escalabilidad.

2. El servidor paralelo de Oracle amplía las capacidades de windownt al permitir que un grupo de nodos comparta el trabajo en el mismo clúster, proporcionando soluciones de clúster de alta disponibilidad y escalabilidad. Si Windows NT no puede satisfacer las necesidades, los usuarios pueden mover la base de datos a UNIX. El servidor paralelo de Oracle tiene un alto grado de integración con los mecanismos de clúster de varias plataformas UNIX.

3. Rendimiento

1. SQL Server tiene un rendimiento deficiente cuando se utilizan varios usuarios

2. Oracle tiene el rendimiento más alto, manteniendo TPC-D y TPC bajo la plataforma abierta -C récord mundial.

4. Soporte de cliente y modo de aplicación

1. Estructura de SQL Server C/S, solo admite clientes de Windows y se puede conectar mediante ADO, DAO, OLEDB y ODBC.

2. La computación en red multinivel de Oracle admite múltiples estándares industriales y se puede conectar con clientes de red como ODBC, JDBC y OCI.

5. Fácil operación

1. SQL Server es fácil de operar, pero solo tiene una interfaz gráfica.

2. Oracle es más complejo y proporciona GUI y línea de comando. La operación es la misma en Windows NT y Unix.

6. Riesgos de uso

1. El código completamente reescrito del servidor SQL ha pasado por pruebas a largo plazo y retrasos continuos. Muchas funciones requieren tiempo para probarse. No muy compatibles.

2. La experiencia de desarrollo a largo plazo de Oracle es totalmente compatible con versiones anteriores. Ser ampliamente utilizado. No hay ningún riesgo en absoluto. En el precio final ORACLE es más caro que SQLSRVER. ¿PHP tiene un mecanismo de concurrencia?

Los diferentes dispositivos deben tener sesiones independientes. El mecanismo de implementación de la sesión es que la primera vez que el navegador visita no contiene ninguna cookie, el servidor genera aleatoriamente un ID de sesión y lo devuelve al cliente como una cookie.

Para visitas posteriores, el navegador traerá esta cookie y el servidor la tratará como la misma sesión.

Se puede observar que si el ordenador es diferente, la sesión debe ser diferente.

¿Cuál es el mecanismo de concurrencia de Hibernate?

Mecanismo de concurrencia de Hibernate:

a. , Una sola unidad de trabajo (es decir, una sola transacción, un solo hilo), que generalmente se usa solo una vez y luego se descarta.

Si se permite compartir una instancia de sesión, los beans de sesión que admiten operaciones concurrentes, como las solicitudes HTTP, causarán contención de recursos.

Si hay una sesión de hibernación en la sesión Http, puede ocurrir un acceso sincrónico a la sesión Http. Siempre que el usuario haga clic en "actualizar" en el navegador lo suficientemente rápido, dos subprocesos que se ejecutan simultáneamente utilizarán la misma sesión.

b. Varias transacciones que acceden al mismo recurso simultáneamente pueden causar una serie de problemas, como el primer tipo de actualizaciones perdidas, lecturas sucias, lecturas fantasma, lecturas no repetibles y el segundo tipo de actualizaciones perdidas. La diferencia entre la concurrencia de Python y la concurrencia de Java

La premisa de usar tornado es que su servicio requiere IO intensivo y debe escribir una API asincrónica. También puede consultar el marco en mi firma para transformar. tornado en un threadpool de eventos (GitHub - nikoloss/iceworld: contenedor multiproceso para tonado).

El backend android ios wap de nuestra empresa está proporcionado por este marco. Se ha cambiado a un grupo de respuesta distribuido. En este momento, tornado solo existe como puerta de enlace de retransmisión: GitHub - nikoloss/cellnest: servicio distribuido

Sin bloqueo, Python El rendimiento definitivamente no es tan bueno. Bueno como lenguajes compilados. Las ventajas de este modelo totalmente asíncrono no se pueden reflejar. Una vez que hay una operación IO, el primer paso de este modelo totalmente asíncrono, la nueva operación de conexión, no se suspenderá, es decir, mientras llegue el contenido, al menos el. El enlace iloop se puede aceptar en su totalidad. Después de recibirlo, la rutina lo procesará a medida que aumenta la concurrencia y su rendimiento disminuirá de manera constante. Si observamos el modelo de subprocesos, si los datos de consumo no pueden seguir el ritmo de la producción de nuevas conexiones y nuevos datos, el rendimiento se desplomará.

Tus 700qps son aproximadamente iguales. Puedes intentar usar Tornado 3.1 o 3.2. 1100~1400 deberían poder agotarse. Por supuesto, si es necesario perseguir un rendimiento de salida de texto estático, creo que la situación real es mucho más complicada que esta simple prueba de estrés. La diferencia entre concurrencia y paralelismo en el sistema operativo, asincronía y subprocesos múltiples

1. Concurrencia: en el sistema operativo, significa que varios programas están en un período de tiempo desde el inicio hasta la ejecución y la finalización, y estos Todos los programas se ejecutan en el mismo procesador, pero solo se ejecuta un programa en el procesador a la vez.

2. Paralelismo: En el sistema operativo, un grupo de programas se ejecutan a una velocidad independiente y asíncrona, ya sea desde una perspectiva micro o macro, los programas se ejecutan juntos.

3. Subprocesos múltiples: subprocesos múltiples es el concepto de capa lógica de programación. Es un fragmento de código que se ejecuta simultáneamente en el proceso. El subproceso múltiple puede realizar el cambio de ejecución entre subprocesos.

4. Asíncrono: asíncrono y sincrónico son relativos. La sincronización significa ejecución secuencial, después de una ejecución, es necesario esperar y coordinar la siguiente. Asincrónico significa que son independientes entre sí y continúan haciendo sus propias cosas mientras esperan un evento. No es necesario esperar a que se complete el evento antes de volver a trabajar. Los subprocesos son una forma de lograr la asincronía. Asincrónico significa que el hilo principal que llama al método no necesita esperar a que otro hilo se complete sincrónicamente, de modo que el hilo principal pueda hacer otras cosas.

5. La asincrónica y el subproceso múltiple no son equivalentes. La asincrónica es el objetivo final, y la asincrónica es solo un medio para lograr la asincronía. Asíncrono es cuando se envía una solicitud de llamada a la persona que llama, y ​​la persona que llama no tiene que esperar a que se devuelva el resultado y puede hacer otras cosas. La implementación asincrónica puede utilizar tecnología de subprocesos múltiples o dejarla en manos de otro proceso para su procesamiento. ¿Cuál es el mecanismo de concurrencia de Hibernate? ¿Cómo lidiar con los problemas de concurrencia?

a. El objeto Session de Hibernate no es seguro para subprocesos. Para una sola solicitud, una sola sesión, una sola unidad de trabajo (es decir, una sola transacción, un solo subproceso), generalmente se usa solo una vez. y luego descartado. Si se permite compartir una instancia de sesión, los beans de sesión que admiten operaciones concurrentes, como las solicitudes HTTP, causarán contención de recursos. Si hay una sesión de hibernación en la sesión Http, puede ocurrir un acceso sincrónico a la sesión Http. Siempre que el usuario haga clic en "actualizar" en el navegador lo suficientemente rápido, dos subprocesos que se ejecutan simultáneamente utilizarán la misma sesión. b. Varias transacciones que acceden al mismo recurso al mismo tiempo pueden causar una serie de problemas, como el primer tipo de actualizaciones perdidas, lecturas sucias, lecturas fantasma, lecturas no repetibles y el segundo tipo de actualizaciones perdidas. Solución: establezca el nivel de aislamiento de la transacción. Serializable: serialización. El nivel de aislamiento más alto. Lectura repetible: lectura repetible confirmada: lectura de datos confirmada. Lectura no confirmada. El peor nivel de aislamiento es establecer bloqueos: bloqueo optimista y bloqueo pesimista.

Bloqueo optimista: use el número de versión o la marca de tiempo para detectar la pérdida de actualización. Configurar optimistic-lock=all en el mapeo puede implementar la verificación de versión sin el mapeo de atributos de versión o marca de tiempo. En este momento, Hibernate comparará cada fila de registros. bloqueo de campos: ¡Hibernate siempre usa el mecanismo de bloqueo de la base de datos y nunca bloquea objetos en la memoria! Simplemente especifique el nivel de aislamiento para la conexión JDBC y deje que la base de datos se encargue de todo. La clase LockMode define los diferentes niveles de bloqueo requeridos por Hibernate: LockMode.UPGRADE, LockMode.UPGRADE_NOWAIT, LockMode.READ;