Historias
Slashboxes
Comentarios
 
Este hilo ha sido archivado. No pueden publicarse nuevos comentarios.
Mostrar opciones Umbral:
Y recuerda: Los comentarios que siguen pertenecen a las personas que los han enviado. No somos responsables de los mismos.
  • por McPolu (19560) <McPolu@gmail.com> el Jueves, 04 Septiembre de 2008, 10:00h (#1078967)
    ( http://mcpolu.blogspot.com/ | Última bitácora: Miércoles, 05 Marzo de 2014, 00:04h )
    Muchas gracias a los dos por la ayuda, pero creo que ninguna de las soluciones me sirve.

    Solucion propuesta 1: sincronizar

    La solucion de iterar dentro de un bloque sincronizado serviria si pudiese modificar la clase conjunto para que todos los metodos fuesen sincronizados; de nada me sirve adquirir el lock sobre conjunto si luego los otros hilos no van a esperar por el. Me explico:

    ------> En el primer hilo: //adquiero el lock sobre conjunto
    sinchronized(conjunto){
      it = conjunto.iterador();
        if (it.hayMas) {

    ------> El primer hilo se suspende, se activa el segundo hilo
    conjunto.operacionEspecial();

    Y ya estamos en la misma situacion. Para que funcionase, tendria que modificar operacionEspecial() para que fuese synchronized, que no puedo, o modificar el codigo que la invoca para que esperara por el lock sobre conjunto:

    sinchronized(conjunto){
      conjunto.operacionEspecial();
    }


    Lamentablemente, tampoco tengo permisos para modificar todos los sitios en los que se llama a operacionEspecial() :-(
    Esto no lo habia dicho en la bitacora, sin esta restriccion la solucion propuesta por lasiozillo sería válida.

    Solucion propuesta 2: usar un proxy y sincronizar sobre el proxy.

    Tiene el mismo problema que la anterior, no basta con que mi codigo use el proxy, todas las clases que invocan a Conjunto tendrian que ser modificadas para usar el proxy :-(

    A esta solucion le pasa lo mismo que a la anterior, es correcta para el problema según lo planteo en la bitácora pero no me sirve porque en el Mundo Real(tm) tengo más restricciones de las que expuse.
    --

    En España la mejor manera de guardar un secreto es escribir un libro.

    Puntos de inicio:    1  punto
    Modificador por Bonus-Karma   +1  

    Total marcador:   2