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