java用了sychoronized多线程 卖票问题 卖出了两个第一张票
答案:1 悬赏:30
解决时间 2021-01-06 09:28
- 提问者网友:记得曾经
- 2021-01-06 03:02
java用了sychoronized多线程 卖票问题 卖出了两个第一张票
最佳答案
- 二级知识专家网友:雾月
- 2021-01-06 04:13
这里的synchronized (aa)直接改为synchronized (“1”); 实例变量String aa = new String("1");可以去掉了,你在下面启用线程的时候是两个对象,不是同一个对象,严格来说已经没意义了,只是你的ticket 变量是static,因此是两个实例共享的变量,这种东西正确的做法是ticket 声明为实例变量,
Xc88 xcaa = new Xc88();
Thread bb = new Thread(xcaa);
bb.start();
Thread cc = new Thread(xcaa );
cc.start();
这也是两个线程,用一个资源,而且这样可以直接使用同步方法,不用同步块,另外提示,类名和变量名还有方法名取点有意义名字。追问改成同一对象的两个实例,就可以了。感谢大神的帮助!
Xc88 xcaa = new Xc88();
Thread bb = new Thread(xcaa);
bb.start();
Thread cc = new Thread(xcaa );
cc.start();
这也是两个线程,用一个资源,而且这样可以直接使用同步方法,不用同步块,另外提示,类名和变量名还有方法名取点有意义名字。追问改成同一对象的两个实例,就可以了。感谢大神的帮助!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯