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')");