Olá a todos:
Estou fazendo um programinha produtor/consumidor e fiz uma classe para tratar a exceção caso a fila que eu implementei ficar cheio - se for add um objeto - ou vazia - se for remover um objeto. Estava tudo lindo até o momento que fui começar a programar o produtor no método run() da thread. Quando solicito que ele adicione um objeto na fila, ele diz que o throws que usei na outra classe é “unreachable”. Como consigo tratar isso? Segue abaixo os códigos
public class CircularQueue implements Queue {
int total, inicio, fim;
PrintJob[] lista;
public CircularQueue(int capacity) {
lista = new PrintJob[capacity];
inicio = 0;
fim = 0;
total = 0;
}
@Override
public synchronized void addBack(PrintJob job) throws QueueException {
if (total < lista.length) {
lista[fim] = job;
fim++;
total++;
if (fim > lista.length) {
fim = 0;
}
} else {
throw new QueueException("Fila está cheia");
}
}
@Override
public synchronized void removeFront() throws QueueException {
if (!isEmpty()) {
notify();
lista[inicio] = null;
inicio++;
total--;
if (inicio > lista.length) {
inicio = 0;
}
} else {
throw new QueueException("Lista está Vazia");
}
}
@Override
public boolean isEmpty() {
if (total == 0) {
return true;
} else {
return false;
}
}
@Override
public int getNumberOfJobs() {
return total;
}
}
[code]public class Producer implements Runnable{
String name;
Queue queue;
PrintJob a;
public Producer(String name, Queue queue){
this.name=name;
this.queue=queue;
}
@Override
public void run(){
for (int i=0;i<=((int)(10+20*Math.random()));i++){
queue.addBack(a=new PrintJob("dfs")); //Aqui gera o erro!
}
}[/code]
[code]public class QueueException extends Exception {
public QueueException(String s) {
super(s);
}
}[/code]