On 08 Sep 2004 22:11:06 GMT, Henrik Stidsen <nospamforme@hs235.dk> wrote:
> Jonas Kongslund <dont@mail.me.at.all> wrote in
> news:u5I%c.3633$dM6.3028@news.get2net.dk
>
>>> Er det muligt at "genstarte" en bestemt tråd efter den er sat i
>>> wait() tilstand ?
>
>>> Jeg kender godt til notify osv, men der har jeg ingen kontrol over
>>> hvilken tråd det er der startes.
>
>> Hvilket problem kræver dette?
>
> At jeg gerne vil have kontrol over hvilken tråd der startes hvornår,
> f.eks. fordi de skal ligge i en "ventekø", f.eks. en FIFO kø - og så
> ville det jo være rart at kunne starte en bestemt tråd.
>
Hvis du taler om at pause en tråd for så senere at fortsætte dens
handling, kan det saggens lade sig gøre, du kan evt se mere på
http://java.sun.com/docs/books/tutorial/essential/threads/index.html.
Du kunne lave noget ligende, hvis du har en collection med dine tråde:
Obejct object;
for (Iterator iterator = collection.iterator(); iterator.hasNext();)
{
object = iterator.next();
try
{
synchronized (object)
{
object.notify();
}
...
...
...
synchronized (object)
{
object.wait();
}
}
catch (IllegalMonitorStateException e)
{
e.printStackTrace();
}
}
Du kan også sætte tråden til selv at sætte sig i wait i run metoden, ala:
public void run()
{
while (true)
{
System.out.println("bla...bla.."); // hvad den nu skal lave....
try
{
synchronized (this)
{
wait();
}
}
catch (IllegalMonitorStateException e)
{
e.printStackTrace();
}
}
}
Hilsen
Martin