为什么总是只有一个线程在工作呢?找错误找了半天也没看出来,请大家帮忙看看
class TicketsSystem
{
public static void main(String[] args)
{
SellThread st=new SellThread();
new Thread(st).start();
try
{
Thread.sleep(1);
}
catch(Exception e)
{
e.printStackTrace();
}
st.b=true;
new Thread(st).start();
//new Thread(st).start();
//new Thread(st).start();
}
}
class SellThread implements Runnable
{
Object obj=new Object();
int tickets=100;
boolean b=false;
public void run()
{
if(b==false)
{
while(true)
sell();
}
else
{
while(true)
{
synchronized(this)
{
if(tickets>0)
{
try
{
Thread.sleep(10);
}
catch(Exception e)
{
e.printStackTrace();
}
System.out.println("obj"+Thread.currentThread().getName()+":"+tickets);
tickets--;
}
}
//sell();
}
}
}
public synchronized void sell()
{
if(tickets>0)
{
try
{
Thread.sleep(10);
}
catch(Exception e)
{
e.printStackTrace();
}
System.out.println("this"+Thread.currentThread().getName()+":"+tickets);
tickets--;
}
}
}
探讨了在并发编程中,如何解决多个线程同时访问共享资源时出现的问题,通过实例展示了使用同步机制(如synchronized关键字)来确保数据一致性的重要性。
5061

被折叠的 条评论
为什么被折叠?



