Haz una donación ahora. Goal amount for this year: 650 EUR, Received: 10 EUR (2%)
¡Ayúdanos a mantener el foro!
Haz una donación para pagar el servidor.

Resultados 1 al 6 de 6

Tema: Métodos synchronized en java

  • Compártelo
  • Herramientas
  • Visualizar
  1. #1
    Forer@ milenari@ Avatar de Arpuros
    Fecha de ingreso
    Sep 2005
    Ubicación
    Bilbo
    Mensajes
    1,345
    Poder
    17

    Métodos synchronized en java

    Hola a todos,

    bueno, voy a intentar explicarme

    A ver, tengo 2 metodos en una clase.

    Desde uno hago un wait(), por tanto debe ser synchronized, no ?

    y desde el otro metodo quiero hacer un notifyAll(), tambien debe ser synchronized, no ?

    Bueno, seria tal que asi.
    Código Java:

    Código:
    // MAIN 
    
    metodoConWait() 
    
    // FIN MAIN 
    
    // Metodos de la clase 
    
    
    public synchronized void metodoConWait(){ 
    
    .... 
    
    /*llamada*/ metodoConNotifyAll(); //aqui dentro se hara el notifyAll 
    .... 
    
    wait() 
    
    ... 
    
    } 
    
    //--------------------------------------------------------------------------- 
    
    public synchronized void metodoConNotifyAll(){ 
    
    ... 
    
    notifyAll(); 
    
    .... 
    
    }

    pero el problema, es que cuando ejecuto el metodo, "metodoConWait()" se me queda parado en la llamada MetodoConNotifyAll() y no llega a entrar al metodo, y no entiendo por que, si le quito el synchronized al metodoConNotifyAll() entonces si me entra, pero claro, no me deja hacer el notifyAll().

    La cosa es bastante mas compleja que todo esto, y tiene sentido que primero se haga el notifyAll, al menos en una primera vez (o eso creo, si es imposible, o asi, decidmelo...), pero si me resolveis esto doy un paso adelante.

    Si no entendis mi pregunta, lo volveré a intentar explicar...

    un saludo y gracias.



    Athletic beti zurekin

  2. #2
    No se exactamente lo que pretendes, pero no tiene mucho sentido hacer un wait dentro de un código sincronizado.

    Saludos

  3. #3
    Forer@ milenari@ Avatar de Arpuros
    Fecha de ingreso
    Sep 2005
    Ubicación
    Bilbo
    Mensajes
    1,345
    Poder
    17
    Cita Iniciado por ch0ch1s Ver mensaje
    No se exactamente lo que pretendes, pero no tiene mucho sentido hacer un wait dentro de un código sincronizado.

    Saludos
    por qué ?



    Athletic beti zurekin

  4. #4
    Estas haciendo algo de monitores o así?

  5. #5
    Cita Iniciado por Arpuros Ver mensaje
    por qué ?
    Si todos los threads intentan pasar por ese sitio, se quedarán esperando a que el primero que entre avandone el wait. Es decir, la aplicación se te queda congelada.

  6. #6
    Forer@ milenari@ Avatar de Arpuros
    Fecha de ingreso
    Sep 2005
    Ubicación
    Bilbo
    Mensajes
    1,345
    Poder
    17
    No, no llega a ser monitores

    Gracias.

    A ver lo que tengo que hace es realmente complejo y lioso, asi que explicarlo seria un verdadero follon, no tiene solo threads, si no que tambien conexion rmi entre 3 clientes-servidor. Solo se que el profesor me ha dicho que lo tengo que hacer asi y ya no le puedo preguntar mas...

    A ver, como puedo hacer entonces para que desde un metodo que tiene que tener un wait, ese wait pueda ser notificado desde otro metodo de la misma clase ?

    Un saludo y gracias.



    Athletic beti zurekin

Información de tema

Usuarios viendo este tema

Actualmente hay 1 usuarios viendo este tema. (0 miembros y 1 visitantes)

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •