Во-первых, вам нужно понять, что wait () - это метод класса Object, поэтому он как будто определенный поток ожидает какого-либо действия, связанного с Object.Так что здесь, если biddingStep (int gt) вызывается в потоке proHs, и вы хотите остановить поток proHs, в основном, чтобы дождаться выбора определенной кнопки, тогда вам нужно поместить ожидание в некоторый объект, вВообще это должен быть Объект, на котором должно произойти какое-то действие.Здесь вам нужен список следующих шагов:
- ссылка на объект proHs.
- установка блокировки на объект proHs.
- вызов proHs.wait ().
Из второго потока вы будете выполнять следующие операции: 1. установить блокировку объекта proHs внутри buttonClickListener
второй поток.) 2. вызвать proHs.notify ().
class InterfaceImpl {
Thread proHs;
boolean btnResponse;
public boolean biddingStep(int gt) {
System.out.println(" ");
System.out.println("I HAVE OR NOT PART");
panelLicitace.setVisible(true);
mam.setVisible(true);
nemam.setVisible(true) ;
// HERE a code i want
//1. stop proHS thread
synchronized(proHs)
{
proHs.wait();
//2. loop program, wait for input from 2 buttons
//3. return true or false
return btnResponse;
}
}
// This method should be called from another thread
public boolean btnClickListener()
{
btnResponse=true or false
synchronized(proHs)
{
proHs.notify();
}
}
}
ЗдесьМетод biddingStep () должен вызываться до btnClickListener (), так что, как только поток будет ожидать, другой поток уведомит об этом.