Tecnología

Inicio

Cómo impedir el acceso simultáneo a un método en Java

Los procesadores modernos con múltiples núcleos pueden aprovechar las aplicaciones Java concurrentes. Una aplicación concurrente es la que realiza varias operaciones al mismo tiempo. Concurrencia presenta desafíos únicos que deben ser abordados para evitar problemas. Un problema importante se produce cuando dos hilos de ejecución de cada acceso el mismo método simultáneamente. Un hilo puede interferir con otro y hacer que los datos poco fiables. Para controlar este problema, se puede evitar el acceso simultáneo a un método que utiliza la característica de sincronización de Java.

Instrucciones

1 Cargar el IDE NetBeans haciendo clic en el icono del programa. Cuando se carga el programa, vaya a "Nuevo Proyecto / Nuevo" y seleccionar "Aplicación Java" de la lista en el lado derecho de la pantalla. Un nuevo archivo de código fuente aparece en el editor NetBeans texto. El archivo de código fuente contiene una función principal vacía.

2 Declarar una variable estática denominada x escribiendo lo siguiente dentro de la función principal en el código fuente: static int x = 0;

3 Crear un método sincronizado mediante la adición de la palabra clave "sincronizado" a la declaración de método. Un método sincronizado sólo se puede acceder por un hilo a la vez, evitando así incoherencias en los datos. Para declarar un método llamado "methodName" sincronizado, escribir la siguiente declaración en el archivo de código fuente: methodName pública sincronizado ()

4 Incrementar un número entero escribiendo la siguiente declaración dentro de los corchetes del método: return x ++;

5 Llamar al método sincronizado. Para entender lo que lleva a cabo la sincronización, supongamos que por primera vez el método no estaba sincronizada. Si dos hilos paralelos llaman al método simultáneamente, van a cada incremento de la variable x. Como x comienza en 0, el resultado de una operación de incremento será x = 1. Esto es un problema porque el método se llama dos veces, y por lo tanto debe ser igual a x 2. Desde "methodName" se sincroniza, sólo uno de los dos hilos paralelos entrará en el método a la vez. Un hilo entrará "methodName," incremento x, y salir. Esto permite que el segundo hilo para introducir "methodName" y llevar a cabo la segunda operación de incremento. Con la palabra clave sincronizada, dos llamadas a "methodName" número de x es igual a 2. Una llamada de método se puede escribir así: methodName ();