Avatar billede tingholm Mester
15. oktober 2003 - 16:50 Der er 5 kommentarer og
1 løsning

noget med tråde, kun den ene kører !

www.tingholm.com/download/java.zip

der er 3 filer, det er spis1.java der har en main funktion.
programmet skal oprette 5 instanser af filisof.java og køre dem i hver sin tråd, men på system.out'en kan vi kun se at det er den ene der arbejder !!
Avatar billede soreno Praktikant
15. oktober 2003 - 16:54 #1
Det som skal køre i tråden skal være i en run metode:
public void run()
{
  ..
}

Sikkert det som din start metode indeholder..

For at starte en tråd kaldes .start();

Fra din main:
    Thread Fil1 = new Filosof(this, 1);
    Thread Fil2 = new Filosof(this, 2);
    Thread Fil3 = new Filosof(this, 3);
    Thread Fil4 = new Filosof(this, 4);
    Thread Fil5 = new Filosof(this, 5);
        Fil1.start();
        Fil2.start();
        Fil3.start();
        Fil4.start();
        Fil5.start();
Avatar billede soreno Praktikant
15. oktober 2003 - 16:56 #2
Altså i din Filosof.java:
    public void run()
    {
        while(true)
        {
            thinking();
            hungry();
            sp.ned();
            sp.be_ned();
            sp.be_ned();
            sp.op();
            eating();
            sp.be_op();
            sp.be_op();
        }
    }
Avatar billede soreno Praktikant
15. oktober 2003 - 17:04 #3
Du kan evt. erstatte:
    Thread Fil1 = new Filosof(this, 1);
    Thread Fil2 = new Filosof(this, 2);
    Thread Fil3 = new Filosof(this, 3);
    Thread Fil4 = new Filosof(this, 4);
    Thread Fil5 = new Filosof(this, 5);
    Fil1.start();
    Fil2.start();
    Fil3.start();
    Fil4.start();
    Fil5.start();

Med:
    Thread filosof[] = new Filosof[5];
    for(int i=0;i<filosof.length;i++)
    {
        filosof[i] = new Filosof(this, i+1);
        filosof[i].start();
    }

Så er det nemmere at undgå inkonsistens.
Avatar billede soreno Praktikant
15. oktober 2003 - 17:06 #4
Det her er nok bedre at erstatte med:

    Thread filosof[] = new Filosof[5];
    for(int i=0;i<filosof.length;i++)
    {
        filosof[i] = new Filosof(this, i+1);       
    }
    for(int i=0;i<filosof.length;i++)
    {
        filosof[i].start();
    }
Avatar billede soreno Praktikant
15. oktober 2003 - 17:06 #5
En blanding af ovenstående betragtes som et svar.
Avatar billede tingholm Mester
15. oktober 2003 - 17:12 #6
ok, takker !!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester