Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Zadatak iz Thread Oblasti

[es] :: Java :: Zadatak iz Thread Oblasti

[ Pregleda: 1263 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

amel
Bosna

Član broj: 9063
Poruke: 43
*.dip.t-dialin.net.



Profil

icon Zadatak iz Thread Oblasti09.07.2009. u 21:00 - pre 180 meseci
Evo jedan zadatak iz Thread oblasti.

Neka cudna masina uvecava svoj unutrasnji counter za jedan pri pozivu metode tick(). Metodom getTicks() se moze provjeriti trenutno stanje countera u masini. Ova masina takodje sadrzi jedno veliko crveno dugme. Pri pozivu metode waitForBigRedButton() masina ceka na pritisak na crveno dugme. Znaci pritiskom na to dugme se izlazi iz te metode. Konkretna implementacija te masine ovdje ne igra nikakvu ulogu. Implementira jedan Interface

Code:

interface Scwbrb {      // Strange counter with big red button
   void tick();         // increment inner counter
   int getTicks()       // read counter state
   void waitForBigRedButton();
}


Implementiraj metodu stress koja provjerava Scwbrb. U jednoj petlji se citavo vreijeme pozivati metoda tick() dok neko ne pritisne crveno dugme. Pritiskom na dugme ce vrijednost masine biti vracena ka rezultat metode.

Code:

int stress(final Scwbrb s) {
   ...
}


Moje rijesenje:

Code:

public int stress(final Scwbrb s) {
        
    new Thread() {
        public void run() {
            while (true)
                s.tick();
        }
    }.start();

    new Thread() {
        public void run() {
            while(true) {
                s.waitForBigRedButton();
            }
        }
    }.start();
    return s.getTicks();
}


Posto konkretna implementacija ove masine nije data, volio bih da mi neko provjeri tacnost, barem sa teoretskog aspekta. Hvala
Scanner
 
Odgovor na temu

Dejan Lozanovic
Dejan Lozanovic
Beograd

Član broj: 691
Poruke: 2325
91.148.91.*

Jabber: null@elitesecurity.org
Sajt: speedy-order.com


+75 Profil

icon Re: Zadatak iz Thread Oblasti11.07.2009. u 11:03 - pre 180 meseci
Ako sam ja dobro razumeo zadatak, to mora ovako da se uradi; jer onaj drugi tread koji si napravio bude blokiran sve vreme. i kad neko pritisne bigred button u tom trenutku ce ti se vratiti s.waitForBigRedButton(), nakon toga ocitas stanje.

Code:

public int stress(final Scwbrb s) {
        
    new Thread() {
        public void run() {
            while (true)
                s.tick();
        }
    }.start();

    s.waitForBigRedButton();
    return s.getTicks();
}

 
Odgovor na temu

[es] :: Java :: Zadatak iz Thread Oblasti

[ Pregleda: 1263 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.