package semaforothread;
import java.util.logging.Level; import java.util.logging.Logger;
public class ThreadSemaforo implements Runnable {
private CorSemaforo cor;
private boolean parar;
private boolean corMudou;
public ThreadSemaforo()
{
this.cor = CorSemaforo.VERMELHO;
this.corMudou= false;
new Thread(this).start();
}
@Override
public void run()
{
while(!parar){
{
try {
switch(this.cor){
// sleep para dormir
case VERMELHO:
Thread.sleep(2000);
break;
case AMARELO:
Thread.sleep(300);
break;
case VERDE:
Thread.sleep(1000);
break;
default:
break;
}
// mudar a cor
this.mudarCor();
}
catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
}
private synchronized void mudarCor(){
switch(this.cor){
case VERMELHO:
this.cor= CorSemaforo.VERDE;
break;
case AMARELO:
this.cor= CorSemaforo.VERMELHO;
break;
case VERDE:
this.cor= CorSemaforo.AMARELO;
break;
default:
break;
}
this.corMudou= true;
notify();
}
public synchronized void esperaCorMudar(){
while(!this.corMudou){
try {
wait();
} catch (InterruptedException ex) {
Logger.getLogger(ThreadSemaforo.class.getName()).log(Level.SEVERE, null, ex);
}
}
this.corMudou=false;
}
public synchronized void desligarSemaforo(){
this.parar=true;
}
public CorSemaforo getCor() {
return cor;
}
}
package semaforothread; public enum CorSemaforo { VERDE, AMARELO, VERMELHO;
}
Opa,
Sempre que postar código formate-o com o botão </>
Explique melhor oq quer fazer, não ficou nada claro.
1 curtida
Olá amigo , este código vai imprimir as cores do semáforo , no caso eu quero que mostre a cor do semáforo.
ainda mto vago, e oq tem a ver com botão?
1 curtida
tipo assim , vai imprimir Vermelho , Verde , Amarelo , eu quero que o Vermelho saia com cor Vermelha , Verde com cor Verde e Amarelo com cor amarela. Ou seja mudar as cores da saída.
Pode ser simples amigo então , em vez de colocar o botão , só mudar a cor no prompt , tá otimo .
Cara, no CMD vc só printa texto, sem cor, sem botão, sem clicks…
Se quer botão, ou que seu semáforo se pareça com o da imagem, faça uma interface em Swing.
1 curtida
Entendi cara, eu vi aqui , que se usar o HTML , dar certo também.
Sim, html na web ou javafx, cmd não.
1 curtida
Há sim, então é difícil fazer estes botões ?
Em teoria é bem fácil, mas aparentemente pra vc n vai ser.
Vc precisa ao menos saber diferenciar um cmd, de uma aplicação desktop e web.
Quando souber em que tecnologia vai criar isso, ai se verá a dificuldade.
Caso não saiba nem sequer oq é uma aplicação swing, recomendo antes fazer um curso.
Então eu vou deixar isso quieto , é um trabalho que tem que apresentar na faculdade, sobre threads , eu já fiz o semáforo , e ainda falta um sobre algo diferente sobre o assunto threads, tem sugestão de algum ai para mim ?
Depende, vc conhece as tecnologias pra desenvolver? se sim, quais?
1 curtida
Como assim ? o professor pediu para fazer aplicações usando threads em qualquer linguagem , eu já fiz em Java.
java é dividido em várias tecnologias como swing, fx, dezenas de web…
mas oq vc conhece em java?
1 curtida
Amigo , estou aprendendo Java e sei um pouco de C, mas igual eu disse, pode ser qualquer aplicação usando Threads, eu queria fazer o relógio digital ou se não a calculadora.
Poisé, mas o professor pra pedir algo com threads já deve ter ensinado várias coisas abaixo disso, as quais está difícil notar que você tenha conhecimento, assim como o pq de um semáforo ou calculadora precisarem de thread.
Boa sorte aí.
Tipo assim , poderia ser qualquer coisa, ai eu fiz do semáforo , mas obrigado pela atenção ai cara.