Witam Was. Ostatnio zacząłem się bawić Javą, bo mam potrzebę napisania programu, który będzie wykonywany współbieżnie, a chciałem się też nauczyć Javy jako języka, bo niesie ze sobą wiele dobrego. Dlatego właśnie nie piszę go w Adzie.
W necie znalazłem wiele przykładów pokazujących programy napisane wpółbieżnie, lecz nigdzie nie widziałem na tyle prostego, by pojąć podstawy.
Przeszukując fora i stronki doszedłem do wniosku, że najprościej:
- napisać własną klasę, która dziedziczy po klasie Thread;
-stworzyć metodę run(), która odpala cały wątek
Właśnie w ten sposób napisałem te moje wypocinki, ale obawiam się że nie działają na tyle współbieżnie (bo nie działają tak w cale) na ile chciałem.
Stworzyłem dwa obiekty klasy aktor, które docelowo, miały operować w tym samym czasie na jednym obiekcie klasy element, raz go zajmując, zwalniając, lub czekając na zwolnienie.
public class proba {
class element
{
boolean wolny;
element()
{
wolny=true;
}
}
class aktor extends Thread
{
int numer;
void zajmij(element j)
{
if (j.wolny==false)
{
System.out.print(this.numer);
System.out.println(": nie moge zajac");
while (j.wolny==false)
{}
j.wolny=false;
System.out.print(this.numer);
System.out.println(": zajalem");
}
else
{
j.wolny=false;
System.out.print(this.numer);
System.out.println(": zajalem");
int n=10000000;
while (n!=0)
n--;
}
}
void zwolnij(element j)
{
j.wolny=true;
System.out.print(this.numer);
System.out.println(": zwolnilem");
}
public void run(element j)
{
zajmij(j);
zwolnij(j);
zajmij(j);
zwolnij(j);
}
}
proba()
{
aktor a1 = new aktor();
a1.numer=1;
aktor a2 = new aktor();
a2.numer=2;
element nowy = new element();
a1.start();
a2.start();
}
public static void main(String[] args)
{
proba p = new proba();
}
}
Mógłby mi ktoś poradzić w jaki sposób napisać program, działąjący w ten sposób?
Z góry dzięki