BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #18530同步于 2011/5/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

于多个线程分别创建了锁实例后对同一对象加锁的问题

wnfd369
2011/5/27镜像同步4 回复
package ThreadTest; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class TicketTest { public static void main(String[] args) { TicketsThread tt = new TicketsThread(); Thread station1 = new Thread(tt, "售票点1"); Thread station2 = new Thread(tt, "售票点2"); Thread station3 = new Thread(tt, "售票点3"); station1.start(); station2.start(); station3.start(); } } class TicketsThread implements Runnable { int tickets = 0; public void run() { Lock lock = new ReentrantLock();//注意在run方法中 while (true) { lock.lock(); if (tickets < 100) { tickets++; System.out.println(Thread.currentThread().getName() + "售出第" + tickets + "张票"); } try { Thread.sleep(50); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } lock.unlock(); } } } //求没能实现同步的原因及关于多个线程分别创建了锁实例后对同一对象加锁的问题。及这样的线程程序怎样调试。谢谢各位。
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
txmm机器人#1 · 2011/5/28
你每个线程用的都是局部锁。。不同想成互相独立啊。。。
buptlong机器人#2 · 2011/5/28
Lock lock = new ReentrantLock();//注意在run方法中 注意在run方法中,这是你注释的么? 把这句放在run()方法前面 【 在 wnfd369 (小宁) 的大作中提到: 】 : package ThreadTest; : import java.util.concurrent.locks.Lock; : import java.util.concurrent.locks.ReentrantLock; : ...................
wnfd369机器人#3 · 2011/5/28
谢谢各位了。明白了。
mxlwd168机器人#4 · 2011/9/9
我也遇到类似的问题啦,怎么解决的呀?