Keskustelevat säikeet harjoitus

apua tarvittais :/

Osaisiko joku neuvoa miten seuraavan koodin saa toimimaan niin että säikeet "keskustelevat" keskenään, eli A ja B sanovat yhden lauseen vuorollaan?

----- KOODI ALKAA ------

private class T1 extends Thread
{

private void sano(String str)
{
System.out.println("A: " str);
}
   
public void run()
{       
sano("Terve!");
sano("Mitäs kuuluu?");
sano("Ihan hyvää kanssa");
sano("OK, näkyillään!");
sano("Moimoi!");
}

private class T2 extends Thread
{

public void sano(String str)
{
System.out.println("B: " str);
}
   
public void run()
{
sano("No terve!");
sano("Kiitos ihan hyvää, entä itsellesi?");
sano("Sehän on mukavaa, minun pitää nyt mennä");
sano("Moi!");
}

private T1 t1 = new T1();
private T2 t2 = new T2();

public void keskustele()
{
t1.start();
t2.start();
}

---- KOODI LOPPUU ---------

Nyt kun keskustele-metodia kutsuu niin vuorosanat tulee miten sattuu.
   

1

286

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Yksinkertainen esimerkki

      Löytyisi varmaan valmiitakin ratkaisuja...


      --- ESIMERKKI ALKAA ---

      public class Esimerkki
      {
         private class PuhevuoronMyöntäjä
         {
            private int vuoro;
            
            public PuhevuoronMyöntäjä(int vuoronumero) {
               vuoro = vuoronumero;
            }
            
            public void odotaOmaaPuhevuoroa(int vuoronumero) {
               while(vuoro != vuoronumero);
            }
            
            public void annaPuhevuoroToiselle(int vuoronumero) {
               vuoro = vuoronumero;
            }
         }
         
         
         private PuhevuoronMyöntäjä puhevuoro = new PuhevuoronMyöntäjä(1);   
         
         
         private class T1 extends Thread
         {
            private void sano(String str)
            {
               puhevuoro.odotaOmaaPuhevuoroa(1);
               System.out.println("A: " str);
               puhevuoro.annaPuhevuoroToiselle(2);
            }
            
            public void run()
            {
               sano("Terve!");
               sano("Mitäs kuuluu?");
               sano("Ihan hyvää kanssa");
               sano("OK, näkyillään!");
               sano("Moimoi!");
            }
         }
         
         
         private class T2 extends Thread
         {
            public void sano(String str)
            {
               puhevuoro.odotaOmaaPuhevuoroa(2);
               System.out.println("B: " str);
               puhevuoro.annaPuhevuoroToiselle(1);
            }

            public void run()
            {
               sano("No terve!");
               sano("Kiitos ihan hyvää, entä itsellesi?");
               sano("Sehän on mukavaa, minun pitää nyt mennä");
               sano("Moi!");
            }
         }

         
         private T1 t1 = new T1();
         private T2 t2 = new T2();

         
         public void keskustele() {
            t1.start();
            t2.start();
         }
         
         
         public static void main(String[] args) {
            new Esimerkki().keskustele();
         }
      }

      --- ESIMERKKI LOPPUU ---

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Heh, Riikka runnoi Suomen BKT:n miinukselle

      Suomi on Riikan irvistysten ansiosta ainoa negatiivisen talouskasvun maa EU:ssa. Ei tästä ainakaan EU:ta voi syyttää, ku
      Maailman menoa
      30
      5053
    2. Sanna vaihteeksi Australian "60 minuuttia" ohjelmassa

      Kansanvälinen superstaramme esiintyi tällä kertaa toisella puolen maapalloa esitettävässä ohjelmassa. Kiinnostus on kova
      Maailman menoa
      67
      1930
    3. HihhuIi-Päivi täpinöissään Viktorin tapaamisesta

      Eiköhän nyt kaikille ole vihdoin selvää kenen joukoissa tämäkin putinisti seisoo. https://www.iltalehti.fi/politiikka/a
      Maailman menoa
      113
      1817
    4. Erään T miehen viimeinen aloitus tänne

      Moi Olen kirjoittanut täällä säännöllisesti yli 5 vuotta. Kaivannut kuten kuuluukiin, mutta myös unohdellut ja selvitel
      Ikävä
      29
      1694
    5. Minkä lempinimen olet

      antanut kaivatullesi?
      Ikävä
      111
      1690
    6. Björn Wahlroos ykkösaamussa nautittavaa kuunneltavaa

      Ehdottomasti viisaimpia ja tietävämpiä ihmisiä mitä Suomesta koskaan tullut. Naureskeli viherpiipertäjille jotka ihan p
      Maailman menoa
      232
      966
    7. Kumpi teki aloitteen?

      🤗🤗🤗🤗
      Ikävä
      71
      911
    8. Yritän saada sinut pois mielestäni ja ajatuksistani nainen

      Turhaan. Mitä enemmän yritän, sitä enemmän haluan sinut ja sinua. Miten voitkaan olla niin ihana ja tuntua niin hyvältä.
      Ikävä
      44
      887
    9. Leikitään tavuleikkiä

      Millaiset nimitavut muodostuvat jos yhdistät oman etunimesi ensimmäisen tavun ja kaipaamasi ihmisen etunimen ensimmäisen
      Ikävä
      54
      833
    10. Mitkä on ne piirteet

      Mitkä kaivatussasi vetoaa tai mihin ihmiset kiinnittävät huomiota
      Ikävä
      53
      792
    Aihe