Avatar billede zity Nybegynder
14. april 2008 - 17:23 Der er 4 kommentarer og
1 løsning

Kald funktion i tråd

Jeg sidder og arbejder på et program, men er imidlertid stødt på et problem, jeg ikke rigtig kan finde en løsning på. Mit program er flertrådet og jeg mangler en måde, at kalde en funktion i en bestemt tråd.

Eksempelkode:
public class TestClass extends Thread
{
    public MyPanel MyJPanel = new MyJPanel();

    public void TestClass()
    {
    }

    public void funktion()
    {
        // Udfør noget
    }
}

public class MyJPanel extends JPanel
{
    public void MyJPanel()
    {
    }

    public void doSomething()
    {
        // Fra denne funktion ønsker jeg at kalde funktion() i TestClass, 
        // men da TestClass er en tråd, kan jeg ikke finde ud af, hvordan
        // jeg får fat i den TestClass som det pågældende MyJPanel er
        // defineret som variabel i.
    }
}

Altså, hvis jeg laver min funktion() static og bare kalder den med TestClass.funktion() så får jeg bare fat i den sidst oprettede tråd, og ikke den som det pågældende MyJPanel er defineret i. Håber i forstår, ellers må i endelig sige til!

På forhånd tak!
Avatar billede arne_v Ekspert
14. april 2008 - 17:29 #1
public MyPanel MyJPanel;

    public void TestClass()
    {
      MyJPanel = new MyJPanel(this);
    }

og

    private TestClass tc;
    public void MyJPanel(TestClass tc)
    {
          this.tc = tc;
    }

    public void doSomething()
    {
      tc.funktion();
    }
Avatar billede montago Praktikant
14. april 2008 - 17:44 #2
Hmmm Tjae...

Hvis man snakker interface (visuelt) så er tråd-kommunikationen givet, som Arne skriver...

Men hvis man laver asynkrone tråde (på anden måde), så skal trådene deles om et object: en Queue (kø) af beskeder... trådene deles om at læse beskederne (i lock'ed tilstand)...

Med mindre man operere med interrupts... som kan være lidt destruktiv for tråden...


sådan husker jeg det...
Men Arne == Gud, når det gælder Java :D
Avatar billede montago Praktikant
14. april 2008 - 17:44 #3
tror vidst enda at '===' skulle være brugt (samme instans)
Avatar billede zity Nybegynder
14. april 2008 - 18:08 #4
Umiddelbart ser det ud til at virke. Synes ellers jeg selv havde prøvet den løsning, men må åbenbart have gjort noget forkert :) Smid et svar, så er der point, arne_v.

montago: Er slet ikke så meget inde i det. Jeg har bare programmering som valgfag på skolen, såå ;)
Avatar billede arne_v Ekspert
14. april 2008 - 18:51 #5
svar
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

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