znaczacy > comp.lang.* > comp.lang.java

michalwert (13.11.2007, 21:52)
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
my t1=new my(1);
my t2=new my(2);
for (int i=1;i<4;i++){
t1.start();
t2.start();}
}

public static synchronized void wypisz(int tekst){
for(int i = 0; i<10; i++)
System.out.print(tekst);
}
class my extends Thread{
int b;
my(int a)
{
b=a;
}
public void run()
{
wypisz(b);
}
}

Jak zrobic zeby te dwa watki t1, t2 szly nieskonczenie wiele razy?
jawor (13.11.2007, 22:37)
On 13 Lis, 20:52, "michalwert" <michalw> wrote:
[..]
> }
> }
> Jak zrobic zeby te dwa watki t1, t2 szly nieskonczenie wiele razy?


w javie nie mozna restartowac watkow ktore juz zakonczyly swoje
dzialanie, a ty wlasnie usilujesz to zrobic
artur.zabronski (13.11.2007, 22:43)
On 13 Lis, 20:52, "michalwert" <michalw> wrote:
[..]
> }
> }
> Jak zrobic zeby te dwa watki t1, t2 szly nieskonczenie wiele razy?

W metodzie run() da wszystko w niesko czon p tl ? Poza tym tworzenie
w tków nie odbywa si ju poprzez rozszerzenie Thread a
implementowanie Runnable.
A startowanie poprzez new Thread(fooRunnable).start();
jawor (13.11.2007, 23:26)
On 13 Lis, 21:43, artur.zabron...@gmail.com wrote:
> On 13 Lis, 20:52, "michalwert" <michalw> wrote:
> W metodzie run() da wszystko w niesko czon p tl ? Poza tym tworzenie
> w tków nie odbywa si ju poprzez rozszerzenie Thread a
> implementowanie Runnable.
> A startowanie poprzez new Thread(fooRunnable).start();
> --
> Pozdrawiam,
> Artur


zlitujcie sie i nie piszcie polskich znakow skoro ich tak nie
widac :)
Artur nie rozumiem Twojego posta o co Ci chodzi? a ty Michal okresl
tak na prawde co Ty chcesz osiagnac bo z pytania "Jak zrobic zeby te
dwa watki t1, t2 szly nieskonczenie wiele razy?" rozumiem ze chcesz
uruchomic jeszcze raz watek w przypadku gdy juz zakonczyl swoje
dzialanie i tego tak jak juz pisalem nie da sie zrealizowac. Mozna
natomiast uzyc mechanizmu wstrzymywania watku (wait/notify)
KosciaK (14.11.2007, 00:00)
jawor pisze:
> rozumiem ze chcesz
> uruchomic jeszcze raz watek w przypadku gdy juz zakonczyl swoje
> dzialanie i tego tak jak juz pisalem nie da sie zrealizowac.


Nie wprost ale można by takie coś zrobić za pomocą Timera i
sheduldowaniem TimerTasku z krótkim periodem

pozdrawiam!
michalwert (14.11.2007, 00:28)
chce aby oba watki sie powtarzaly w nieskonczonosc (docelowo program ma
przemieszczac jakies dwa obiekty po ekranie(osobny watek dla kazdego)). poza
tym obiekty te musza na siebie oddzialywac wiec trzeba jakos zrobic zeby
przekazywaly miedzy soba jakies parametry (tez nie wiem jak to zrobic).
prosze o pomoc
mwi (14.11.2007, 01:36)
> chce aby oba watki sie powtarzaly w nieskonczonosc (docelowo program ma
> przemieszczac jakies dwa obiekty po ekranie(osobny watek dla kazdego)). poza
> tym obiekty te musza na siebie oddzialywac wiec trzeba jakos zrobic zeby
> przekazywaly miedzy soba jakies parametry (tez nie wiem jak to zrobic).
> prosze o pomoc


rozumiem, że chodzi Ci o to, żeby każdy z wątków uruchomił się po jednym razie a
w wątku następowało powtarzanie w nieskończoność?

mwi
artur.zabronski (14.11.2007, 09:52)
On 13 Lis, 22:26, jawor <ja> wrote:
> zlitujcie sie i nie piszcie polskich znakow skoro ich tak nie
> widac :)

Czasami zapominam o tym jak korzystam z Google Groups i przypominam
sobie juz po nacisnieciu Send.
> Artur nie rozumiem Twojego posta o co Ci chodzi?

O to zeby nie tworzyc klasy-watku poprzez rozszerzenie Thread tylko
implementowac Runnable. Z petla chodzilo mi o zawarcie wszystkiego w
run() w while (true) { }.
michalwert (14.11.2007, 10:23)
> O to zeby nie tworzyc klasy-watku poprzez rozszerzenie Thread tylko
> implementowac Runnable. Z petla chodzilo mi o zawarcie wszystkiego w
> run() w while (true) { }.


tylko chodzi mi o to zeby najpierw raz pierwszy watek potem drugie, potem
pierwszy, potem drugi...
jezeli dam while (true) w run to z uzywajac synchronized (jak wczesniej) to
jak te watki beda sie przeplatac, bo z poczatku myslalem ze drugi wogole sie
nie uruchomi, ale z tego co zauwazylem sie pomylilem
jawor (14.11.2007, 12:38)
On 14 Lis, 09:23, "michalwert" <michalw> wrote:
> > O to zeby nie tworzyc klasy-watku poprzez rozszerzenie Thread tylko
> > implementowac Runnable. Z petla chodzilo mi o zawarcie wszystkiego w
> > run() w while (true) { }.


po co? jezeli projektujacy aplikacje wie na 100% ze jego watek nie
bedzie musial po niczym innym dziedziczyc (w tym przypadku to raczej
pewne) to niech rozszerza Thread

> tylko chodzi mi o to zeby najpierw raz pierwszy watek potem drugie, potem
> pierwszy, potem drugi...
> jezeli dam while (true) w run to z uzywajac synchronized (jak wczesniej) to
> jak te watki beda sie przeplatac, bo z poczatku myslalem ze drugi wogole sie
> nie uruchomi, ale z tego co zauwazylem sie pomylilem


ze co ???

musisz zrobic cos w stylu:
1. watek 1 rob swoje
2a. watek 1 jak zrobisz swoje to uruchom watek 2 i wstrzymaj swoje
dzialanie
2b. watek 1 jak zrobisz swoje to powiadom watek 2 i wstrzymaj swoje
dzialanie
3a. watek 2 rob swoje
3b. watek 2 jesli dostales info ze watek 1 zrobil swoje to wznow
dzialanie i rob swoje
4. watek 2 jak zrobisz swoje to powiadom watek 1 i wstrzymaj swoje
dzialanie
5. watek 1 jesli dostales info ze watek 2 zrobil swoje to idz do pkt 1
(z tym ze pozniej wykonaj 2b, 3b)
itd.

do tego moze ci posluzyc mechanizm wait / notify
Leonard Milcin (14.11.2007, 13:01)
jawor wrote:
> musisz zrobic cos w stylu:


Nic nie musi, nic nie musi. Jest bardzo wiele rozwiazan tego problemu.

Pozdrawiam,
Leonard
Podobne wątki