Documentos de Académico
Documentos de Profesional
Documentos de Cultura
C C
C
C C
C
Habitacion VectorCosas
Escenario
* 1
colocar (Cosa)() extraer()
getHabitacion() guardar
ret irar()
1 verHabit acion() (Cosa)() most
1 rar()
1
se mueve por
está ubicado en
* *
* Actor Cosa
juego
situarEn() putNombre (String)()
main() * run() getNombre()
navegar() MayorQue (Cosa)()
t oS tring()
this.numCosa = O;
this.contenido = new VectorCosas();
for (int i=O; i<n_cosas; i++) {
pos = (int)( Math.random() * 1OO.O );
this.colocar ( new Cosa(pos, pos, pos), "" );
}
}
}ƒƒfin Habitacion
public VectorCosas () {
lista = new Cosa [MAX];
tam = O;
}
try {
while (tam == MAX ) {ƒƒpuedo almacenar?
System.out.println (quien + " espera poder colocar Cosa.");
wait();
}
System.out.println(quien + " coloca C" + c.getNombre());
while ( (p < tam) && (! encontrado) ) {ƒƒalmaceno ordenado
if ( lista[p].mayorQue(c) ) encontrado = true;
else p++;
}
if ( ! encontrado )
lista[tam] = c;
else {
for (int i=tam-1; i>=p; i--)
lista[i+1] = lista [i];
lista[p] = c;
}
tam++;
notifyAll(); ƒƒya esta, notifico.
}
catch (InterruptedException e) {}
}
Lenguajes de Programación - Progr. Concurrente 38
Clase VectorCosas (3)
public synchronized void extraer (String quien) {
int eleccion = (int) ( Math.random() * tam );
try {
ƒƒpuedo extraer?
while ( tam == O ) {
System.out.println (quien + " espera poder eliminar Cosa.");
wait();
}
ƒƒelimino "eleccion"
System.out.println(quien + " elimina C" + lista[eleccion].getNombre());
for (int i=eleccion + 1; i<tam; i++)
lista[i-1] = lista[i];
tam--;
ƒƒya esta, notifico.
notifyAll();
}
catch (InterruptedException e) {}
}
}ƒƒfin ListaCosas
public Cosa () {
this (O, O, O);
}
str = "C" + this.nom + " (" + this.x + ", " + this.y + ", "
+ this.z + ")";
return str;
}
}ƒƒfin Cosa