Las colas tienen muchas aplicaciones en los sistemas computacionales. La mayoría de las computadoras tienen
sólo un procesador, por lo que sólo pueden atender a una aplicación a la vez. Cada aplicación que requiere tiempo
del procesador se coloca en una cola. La aplicación al frente de la cola es la siguiente que recibe atención. Cada
aplicación avanza gradualmente al frente de la cola, a medida que las aplicaciones al frente reciben atención.
Las colas también se utilizan para dar soporte al uso de la
cola de impresión
. Por ejemplo, una sola impre-
sora puede compartirse entre todos los usuarios de la red. Muchos usuarios pueden enviar trabajos a la impresora,
incluso cuando ésta ya se encuentre ocupada. Estos trabajos de impresión se colocan en una cola hasta que la
impresora esté disponible. Un programa conocido como
spooler
administra la cola para asegurarse que, a medida
que se complete cada trabajo de impresión, se envíe el siguiente trabajo a la impresora.
En las redes computacionales, los paquetes de información también esperan en colas. Cada vez que un
paquete llega a un nodo de la red, debe enrutarse hacia el siguiente nodo en la red a través de la ruta hacia el des-
tino fi nal del paquete. El nodo enrutador envía un paquete a la vez, por lo que los paquetes adicionales se ponen
en una cola hasta que el enrutador pueda enviarlos.
Un servidor de archivos en una red computacional se encarga de las peticiones de acceso a los archivos de
muchos clientes distribuidos en la red. Los servidores tienen una capacidad limitada para dar servicio a las peti-
ciones de los clientes. Cuando se excede esa capacidad, las peticiones de los clientes esperan en colas.
En la fi gura 17.13 se crea una clase de cola que contiene un objeto de la clase
Lista
(fi gura 17.3). La clase
Cola
(fi gura 17.13) proporciona los métodos
enqueue
,
dequeue
,
estaVacia
e
imprimir
. La clase
Lista
con-
tiene otros métodos (por ejemplo,
insertarAlFrente
y
eliminarDelFrente
) que preferiríamos no estuvieran
accesibles mediante la interfaz pública para la clase
Cola
. Mediante el uso de la composición, estos métodos en
la interfaz pública de la clase
Lista
no son accesibles para los clientes de la clase
Cola
. Cada método de la clase
Cola
llama a un método apropiado de
Lista
; el método
enqueue
llama al método
insertarAlFinal
de
Lista
,
el método
dequeue
llama al método
eliminarDelFrente
de
Lista
,
el método
estaVacia
llama al método
estaVacia
de
Lista
y el método
imprimir
llama al método
imprimir
de
Lista
.
Para fi nes de reutilización, la
clase
Cola
se declara en el paquete
com.deitel.jhtp7.cap17
.
1
// Fig. 17.13: Cola.java
2
// La clase Cola.
3
package
com.deitel.jhtp7.cap17;
4
5
public class
Cola
6
{
7
private
Lista listaCola;
8
9
// constructor sin argumentos
10
public
Cola()
11
{
12
listaCola =
new
Lista(
"cola"
);
13
}
// fin del constructor de Cola sin argumentos
14
15
// agrega objeto a la cola
16
public void
enqueue( Object objeto )
17
{
18
listaCola.insertarAlFinal( objeto );
19
}
// fin del método enqueue
20
21
// elimina objeto de la cola
22
public
Object dequeue()
throws
ExcepcionListaVacia
23
{
24
return
listaCola.eliminarDelFrente();
25
}
// fin del método dequeue
26
27
// determina si la cola está vacía
28
public boolean
estaVacia()
Figura 17.13
|
Cola
utiliza la clase
Lista
. (Parte 1 de 2).
17.8 Colas
731
17_MAQ_CAP_17_DEITEL.indd731
4/19/081:30:07AM