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.
Keskustelevat säikeet harjoitus
1
265
Vastaukset
- 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
- 881517
Kesän odotuksia hyrynsalmella
Kyllä kesällä hyrynsalmellakin on mahdollisuus osallistua kylän menoon monella tavalla . On kaunislehdon talomuseolla101380- 751146
- 1151109
- 681085
- 75981
- 68905
Anne Kukkohovi ei myykkään pikkuhousujaan
Kyseessä oli vain markkinointitempaus. Anne höynäytti hienosti kaikkia ja Onlyfans-tilinsä tilaajamäärä lähti jyrkkään n255900Voi Rakas siellä
Olet ollut mun ajatuksissa taas koko päivän. Olet ihmeellinen kertakaikkiaan ja arvostan sinua niin paljon❤️Minulla ei o12831- 33813