Попробуйте что-то подобное (вы можете проверить это, попробовав этот код ):
final Object monitor = new Object();
class Drawing implements Runnable
{
@override
void run()
{
while(true)
{
synchronized(monitor)
{
monitor.wait();
}
// draw
}
}
}
public static void main(String[] args) {
// start your thread
while(true)
{
if( needRefresh )
{
synchronized(monitor)
{
monitor.notify();
}
}
}
}
Я бы рекомендовал использовать Семафор , если вы хотите подать сигнал один раз, а затем продолжать рисовать (т.е. не блокировать), пока сигнал не будет выключен.