ciao a tutti, spero che qualcuno mi possa aiutare a capire meglio il concetto di wait() e notify().

diciamo che ho tanti clienti che chiamano un taxi per farsi portare da un posto all'altro. clienti e taxi sono thread:

il cliente, nel suo metodo run() chiama un metodo synchronized del taxi. In tal modo gli altri thread non possono accedere contemporaneamente a questo metodo.

ora, voglio che il cliente "dorma" finchè il taxi non finisce il suo compito e "risvegli" il cliente (che sarà pronto ad effettuare un'altra chiamata magari per un altro taxi).

DOMANDA 1:
se io inserisco l'istruzione wait() nel metodo synchronized dell'oggetto Taxi faccio una cosa corretta?

cioe': un wait a quel punto significa che "addormento" il thread che sta eseguendo quel codice (il cliente). poi quando il taxi finisce il suo compito, sempre dalla classe Taxi chiamo notify() che risveglia il cliente. giusto?

DOMANDA 2: ho provato a dichiarare synchronized il metodo run() in modo da poter chiamare wait() all'interno del thread stesso. sembra funzionare anche cosi', ma è corretto? poi come faccio a risvegliare il thread? devo richiamare notify dal taxi?

vi sembra piu' corretto l'approccio 1 o 2? ho scritto castronerie?? vi prego se qualcuno sa.... mi illumini!

grazie!
PS78