我只是想知道是否可以就某些代码获得一些建议
好的,所以我有一个线程类(非常基本)基本上调用了这个对象,我现在将显示它的代码......这个代码给了我一个无限的等待(),我不知道为什么。
public void play()
{
if(!queue.isEmpty()){
synchronized(this)
{
if(queue.peek().ballCount <=AvailableGolfBalls)
{
//check if there all people in queue, if yes, give them preferance
queue.poll().notify();
}
}
}
hasBalls=false;
try
{
while (!hasBalls)
{
if(AvailableGolfBalls >= count)
{
AvailableGolfBalls -=count;
synchronized(this){
//the main code for thread
}
hasBalls=true;
}
else
{
//there isnt enough balls,wait
queue.add(this);
Thread.sleep(500);
System.out.println(ThreadID.get() +" -no balls availiable ");
synchronized(this)
{
this.wait();
}
}
}
}
catch (InterruptedException exception)
{
}
AvailableGolfBalls +=count;
}
我尽可能地简化了我的代码,虽然它是一个非常简单的程序,但是我一周前才开始使用多线程,很多概念仍然让我感到困惑。这个程序所做的基本上是每个线程在运行之前都需要一定数量的球,如果它没有所需的球,则排队等待它可用。