JAVA 多线程小程序出现问题了

publicvoidrun(){Objectobj=newObject();while(isNotEmpty){if(tick<=0)isNotEmpty=false;e... public void run()
{
Object obj=new Object();

while(isNotEmpty)
{
if(tick<=0)
isNotEmpty=false;
else
{
synchronized(obj)
{
try{
Thread.sleep(10);
}
catch(Exception e)
{}
System.out.println("第"+Thread.currentThread().getName()+"号窗口卖出第 "+tick--+"票");
}
}
}
结果
展开
 我来答
小童鞋_成er
2014-08-01 · 知道合伙人数码行家
小童鞋_成er
知道合伙人数码行家
采纳数:4650 获赞数:22879
主要从事J2EE工作,热爱Java,用心讨论技术,共同进步。

向TA提问 私信TA
展开全部
您好,提问者:
你要把Object obj = new Object(); 定义在run方法外面。
另外可以使用静态锁,synchronized(Object.class)这样保险。
放到里面的话,每次开启一个线程运行run方法,就会创建多个。
方法二:可以修改为方法锁,public synchronized void run(){
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式