Skip to content

Introducción a Git en la materia Laboratorio de Programación

Notifications You must be signed in to change notification settings

McJaben/lab-prog-2024-intro-git

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

a) Introducción

Java incorpora el mecanismo synchronized para garantizar la atomicidad y exclusión mutua en entornos concurrentes. Utilizando la palabra clave synchronized junto con un lock implícito, Java permite acceso exclusivo al código que manipula datos compartidos, asegurando que los métodos que acceden a estos datos estén sincronizados sobre el mismo lock. Cada objeto en Java posee un lock, heredado de la clase Object. Este mecanismo asegura que solo un hilo a la vez pueda ejecutar un bloque de código sincronizado, lo que evita condiciones de carrera y garantiza la consistencia de los datos compartidos.

Existen dos formas de aplicar sincronización en Java: a través de métodos sincronizados y bloques sincronizados. Un bloque sincronizado está compuesto por dos partes: una referencia a un objeto que actúa como lock (frecuentemente el objeto actual, indicado por this), y el bloque de código que será protegido por ese lock. Un método sincronizado, por otro lado, es similar a un bloque sincronizado que abarca todo el código del método, utilizando como lock el objeto sobre el cual se invoca el método. En el caso de los métodos estáticos, la clase misma se usa como lock, garantizando así la exclusividad en la ejecución del código.

b) Guía de Uso

Para utilizar el mecanismo de sincronización en Java, sigue estos pasos:

  1. Implementar métodos sincronizados:

    • Marca un método con la palabra clave synchronized para que su ejecución esté protegida por el lock del objeto. Esto garantiza que solo un hilo a la vez pueda acceder al método, evitando condiciones de carrera.
    public synchronized void metodoSincronizado() {
        // Código protegido por el lock del objeto
    }
  2. Utilizar bloques sincronizados:

    • Para sincronizar solo una parte del método, usa un bloque sincronizado. Proporciona una referencia a un objeto que servirá como lock y coloca el código a sincronizar dentro de ese bloque.
    public void metodoConBloqueSincronizado() {
        synchronized (this) {
            // Código protegido por el lock del objeto actual
        }
    }
  3. Sincronización en métodos estáticos:

    • Para métodos estáticos, utiliza la clase como lock. Esto se logra sincronizando en la clase misma.
    public static synchronized void metodoEstaticoSincronizado() {
        // Código protegido por el lock de la clase
    }

About

Introducción a Git en la materia Laboratorio de Programación

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published