我正在制作纸牌游戏应用程序。我有2个线程:
线程 curr =这里保存了当前线程(JavaFx线程)
线程 proHs =这是应用程序的大脑,通过接口运行方法
我想停止线程 proHs 一秒钟,直到选择两个按钮之一 mam nemam
然后,我必须返回 true 或 false 。
感谢您的任何建议或建议。 谢谢!
我尝试了无限循环
public boolean biddingStep(int gt) //above this method is @Override, I can't post this with it
{
System.out.println(" ");
System.out.println("I HAVE OR NOT PART");
try {
proHs.wait();
}
catch (Exception e){
System.out.print(e);
}
panelLicitace.setVisible(true);
mam.setVisible(true);
nemam.setVisible(true) ;//
return false;//there would be the resolution of button "mam" or "nemam"
}
编辑#1
我想从你这里得到什么:
public boolean biddingStep(int gt) //above this method is @Override, I can't post this with it
{
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
//2. loop program, wait for input from 2 buttons
//3. return true or false
}
答案 0 :(得分:2)
首先,您需要了解wait()是Object类的方法,因此就像特定线程正在等待与Object相关的某些操作一样。 因此,在这里,如果在proHs线程下调用 biddingStep(int gt),而您想停止proHs线程(基本上要等到选择了特定的按钮),则需要在某个对象上进行等待,通常,它应该是需要对其执行某些操作的对象。您需要在此处列出以下步骤:
在第二个线程中,您将执行以下操作:
1.锁定buttonClickListener内的proHs对象
第二个线程。)
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();
}
}
}
在此,应该在btnClickListener()之前调用biddingStep()方法,以便一旦线程等待,则另一个线程将通知它。