1- Considere que uma Thread só possa prosseguir quando a variável ‘seguir’ seja igual a 1. Crie um guarded-block para essa condição. Não omita eventual tratamento de exceção.
2- Considere que ‘declaracao’ é uma variável Statement. Escreva uma linha de código para inserir, usando esta variável, o valor ‘andre’ na coluna ‘nome’ da tabela ‘professor’.
Para criar um guarded-block para essa condição, podemos utilizar o método wait() da classe Object em conjunto com um loop while que verifica se a condição foi atendida. Quando a condição for satisfeita, podemos utilizar o método notify() ou notifyAll() para notificar as threads bloqueadas.
public class ExemploGuardedBlock {
private int seguir = 0;
public synchronized void setSeguir(int valor) {
seguir = valor;
notifyAll(); // Notifica as threads bloqueadas
}
public synchronized void metodoThread() {
while (seguir != 1) {
try {
wait(); // Aguarda a variável seguir ser igual a 1
} catch (InterruptedException e) {
// Tratamento de exceção
}
}
// Código da thread que segue
}
}
Assumindo que o objeto Connection e a variável declaracao já foram inicializados corretamente, a linha de código para inserir o valor ‘andre’ na coluna ‘nome’ da tabela ‘professor’ seria algo próximo disso:
declaracao.executeUpdate("INSERT INTO professor (nome) VALUES ('andre')");