To mój pierwszy post na tym forum więc się przywitam :)))
WITAM ;)))
Post ten zamieścilem już na dwóch forach, ale zero odzewu było więc spróbuje tutaj.... :))
Mam problem, otóż dostałem zadanie do zrobienia z wątków.
Chodzi o program, który ma 3 wątki. Mają one po kolei wypisywać na ekranie 1 , 2 , 3.. Wątek jeden wypusuje 1, drugi 2 itd...
To co się dzieje w metodzie run() ma być w bloku synchronized (nic nowego chyba ;P) ogólnie program ma wyglądać tak jak napisałem...chyba...
Problem tkwi w tym, że to co ja napisałem wykonuje się tylko raz, a nie kilka...
Bardzo bym prosił o wyjaśnienie co mam źle w tym kodzie :)))
oto kod:
class Licznik
{
public int n = 1;
}
class T1 extends Thread
{
Licznik t;
T1(Licznik z)
{
t = z;
}
public void run()
{
synchronized (this)
{
while(true)
{
while(t.n!=1)
{
try {wait();
} catch(InterruptedException exc) {}
}
System.out.println("1 ");
t.n=2;
this.notify();
}
}
}
}
class T2 extends Thread
{
Licznik t;
T2(Licznik z)
{
t = z;
}
public void run()
{
synchronized (this)
{
while(true)
{
while(t.n!=2)
{
try {wait();} catch(InterruptedException exc) {}
}
System.out.println("2 ");
t.n=3;
this.notify();
}
}
}}
class T3 extends Thread
{
Licznik t;
T3(Licznik z)
{
t = z;
}
public void run()
{
synchronized(this)
{
while(true)
{
while(t.n!=3)
{
try {wait();} catch(InterruptedException exc) {}
}
System.out.println("3 ");
t.n=1;
this.notifyAll();
}}
}
}
public class Zadanie
{
public static void main (String [] args)
{
Licznik licznik = new Licznik();
T3 t3 = new T3(licznik);
T1 t1 = new T1(licznik);
T2 t2 = new T2(licznik);
t1.start();
t2.start();
t3.start();
}
}
Czekam na cenne uwagi :)