
关于java多线程同步锁
classtestimplementsRunnable{intticket=1;testg=newtest();publicvoidrun(){synchronized(...
class test implements Runnable
{
int ticket=1;
test g=new test();
public void run()
{
synchronized(g)
{
while(true)
{
System.out.println("你购买的票是"+ticket+++"号");
if(ticket==10)
break;
}
}
}
}
public class gp17
{
public static void main(String args[])
{
Test t=new Test();
Thread s1=new Thread(t);
Thread s2=new Thread(t);
Thread s3=new Thread(t);
Thread s4=new Thread(t);
s1.start();
s2.start();
s3.start();
s4.start();
}
}
我的同步锁设置错了,提示,我的锁对象是g,我想问问为什么不可以啊?? 展开
{
int ticket=1;
test g=new test();
public void run()
{
synchronized(g)
{
while(true)
{
System.out.println("你购买的票是"+ticket+++"号");
if(ticket==10)
break;
}
}
}
}
public class gp17
{
public static void main(String args[])
{
Test t=new Test();
Thread s1=new Thread(t);
Thread s2=new Thread(t);
Thread s3=new Thread(t);
Thread s4=new Thread(t);
s1.start();
s2.start();
s3.start();
s4.start();
}
}
我的同步锁设置错了,提示,我的锁对象是g,我想问问为什么不可以啊?? 展开
1个回答
展开全部
你的g是自己new的 你应该锁this
更多追问追答
追问
详细一点呗 这块有点迷糊,new也可以啊,不是说同一个对象就行么?
追答
你的是同一个对象吗? 你那只是同一个类
你这个项目中t 做了多线程操作 t这个对象中又包含了g
你实际操作的是t 不是g

2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,...
点击进入详情页
本回答由大雅新科技有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询