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