import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
public class Reloj extends Applet {
public void init() {
TextField mostrarSegundos = new TextField(20);
add(mostrarSegundos);
TextField mostrarMinutos = new TextField(20);
add(mostrarMinutos);
TicToc minutoTic = new TicToc();
Minuto minuto = new Minuto(mostrarMinutos, minutoTic);
minuto.start();
Segundo segundo = new Segundo(mostrarSegundos, minutoTic);
segundo.start();
}
class Segundo extends Thread {
private int segundos = 0;
private TextField mostrarSegundos;
private TicToc minutoTic;
public Segundo (TextField mostrarSegundos, TicToc minutoTic) {
this.mostrarSegundos = mostrarSegundos;
this.minutoTic = minutoTic;
}
public void run() {
while (true) {
try {
Thread.sleep(1000);
}
catch (InterruptedException e) {
System.err.println("Excepcion");
}
if (segundos == 59) {
minutoTic.tic();
segundos = 0;
}
else segundos++;
mostrarSegundos.setText(segundos + " segundos");
}
}
}
}
class Segundo extends Thread {
private int segundos = 0;
private TextField mostrarSegundos;
private TicToc minutoTic;
public Segundo (TextField mostrarSegundos, TicToc minutoTic) {
this.mostrarSegundos = mostrarSegundos;
this.minutoTic = minutoTic;
}
public void run() {
while (true) {
try {
Thread.sleep(1000);
}
catch (InterruptedException e) {
System.err.println("Excepcion");
}
if (segundos == 59) {
minutoTic.tic();
segundos = 0;
}
else segundos++;
mostrarSegundos.setText(segundos + " segundos");
}
}
}
class Minuto extends Thread {
private int minutos = 0;
private TextField mostrarMinutos;
private TicToc minutoTic;
public Minuto (TextField mostrarMinutos, TicToc minutoTic) {
this.mostrarMinutos = mostrarMinutos;
this.minutoTic = minutoTic;
}
public void run() {
while (true) {
minutoTic.esperarTic();
if (minutos == 59) {
minutos = 0;
}
else minutos++;
mostrarMinutos.setText(minutos + " minutos");
}
}
}
class TicToc {
private boolean ticOcurre = false;
public synchronized void esperarTic() {
while (!ticOcurre)
try {
wait();
}
catch (InterruptedException e) {
System.err.println("Excepcion");
}
ticOcurre = false;
}
public synchronized void tic() {
ticOcurre = true;
notify();
}
}
|