返回信息流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();
}
}
}
//求没能实现同步的原因及关于多个线程分别创建了锁实例后对同一对象加锁的问题。及这样的线程程序怎样调试。谢谢各位。
这是一条镜像帖。来源:北邮人论坛 / java / #18530同步于 2011/5/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
于多个线程分别创建了锁实例后对同一对象加锁的问题
wnfd369
2011/5/27镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
Lock lock = new ReentrantLock();//注意在run方法中
注意在run方法中,这是你注释的么?
把这句放在run()方法前面
【 在 wnfd369 (小宁) 的大作中提到: 】
: package ThreadTest;
: import java.util.concurrent.locks.Lock;
: import java.util.concurrent.locks.ReentrantLock;
: ...................