Program z użyciem wait i notify

0

Witam

Za zadanie mam napisanie prostej aplikacji w Javie z użyciem wątków.

W aplikacji mają być użyte dwa wątki, które korzystają z obiektu c klasy Counter.

Pierwszy wątek ma za zadanie wywołać metodę count, a drugi czeka wyświetla rezultat z metody getCount.

Oczywiście wątki mają "zadziałać jednocześnie". Wątek drugi ma czekać aż wykona się wszystko w c.count() a później wyświetla wynik. Trzeba użyć notify i wait

Czy ktoś może napisać kilka linijek tak aby mi to zadziałało, bo męczę się z Tym. Wyskakują mi wyjątki albo wpada mi w pętlę.

class Counter 
{
    int c;
    public void count() {

        synchronized(this)
        {
            c = 0;
            for (int i = 0; i < 100000; i++) {
                c += c + 1;
            }       
        }       
    }

    public int getCount() {
        return c;
    }
}

Dzięki za kod albo wskazówki !! :)

0

W bloku synchronized(obj) można zrobić obj.wait() - to będzie czekało, póki ktoś nie wywoła notify na tym obiekcie.
notify też trzeba w synchronizowanym odpalić...
dodałem pętlę while, ponieważ zawsze należy sprawdzać czy zadanie na które czekamy zostało aby na pewno wykonane.

class Counter {
    int c;

    public synchronized void count() {
        c = 0;
        for (int i = 0; i < 100000; i++) {
            c += c + 1;
        }
        this.notify();
    }

    public synchronized int getCount() {
        try {
            while (c == 0)
                this.wait();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return c;
    }
}
0

Dzięki za pomoc :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0