Я рендеринга BufferedImage на numuber потоков. Когда я запускаю те потоки, я вызываю wait в Thread Dispatch Thread, чтобы он действительно рисовал изображение только тогда, когда все потоки рендеринга отправили сигнал уведомления.Рендеринг изображения без makign Event Dispatch Thread wait?
Это то, что происходит в EDT:
synchronized (this)
{
while(threadsCompleted<RENDERING_THREADS){
try{
this.wait();
}catch (InterruptedException e){
e.printStackTrace();
}
}
threadsCompleted = 0;
}
g2.drawImage(image);
и это то, что происходит, когда поток завершает работы:
synchronized (MyPanel.this){
threadsCompleted++;
MyPanel.this.notify();
}
Мой вопрос: есть ли способ, чтобы сделать вызов drawImage ждет завершения потоков, фактически не прекратив работу EDT? есть ли способ, чтобы в те миллисекунды, что рендеринг продолжается, пользователь может фактически взаимодействовать с пользовательским интерфейсом, таким образом, Event Dispatch Thread?
Move \ первый синхронизированный код в свой собственный поток, и вызовите метод drawImage с использованием метода runnable runnable запуска SwingUtilities. –