public class SaleTicketThread{
public static void main(String[] args) {
//创建共享资源对象
TicketThread tt = new TicketThread();
//创建线程
Thread t1 = new Thread(tt,"窗口一");
Thread t2 = new Thread(tt,"窗口二");
Thread t3 = new Thread(tt,"窗口三");
Thread t4 = new Thread(tt,"窗口四");
//线程准备就绪
t1.start();
t2.start();
t3.start();
t4.start();
}
}
class TicketThread implements Runnable{
//票数
private int tickets = 50;
//锁对象
Object obj = new Object();
@Override
public void run() {
while (true){
//同步
synchronized (obj) {
if (tickets > 0) {
System.out.println(Thread.currentThread().getName() + "卖出第:" + tickets-- + " 张票");
}else{
break;
}
}
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName()+"卖完了");
}
}
多线程同步 通过实现Runnable的示例
最新推荐文章于 2022-11-29 23:26:36 发布
本文介绍了一个使用Java实现的多线程售票系统,通过共享资源对象和线程同步机制,确保了在多个窗口同时售票时票务的正确性和一致性。系统采用TicketThread类作为共享资源,四个线程分别代表不同的售票窗口,通过synchronized关键字实现线程间的同步,避免了竞态条件和死锁的发生。

415

被折叠的 条评论
为什么被折叠?



