


package com.nanjing.juc;
class Ticket{
//票的数量
private int number = 300;
//操作方法:卖票
public synchronized void sale(){
//判断是否有票
if(number > 0){
System.out.println(Thread.currentThread().getName()+" :卖出:"+(number--)+" 剩下:"+number);
}
}
}
public class SaleTicket {
//创建多个线程,调用资源类的操作方法
public static void main(String[] args) {
//创建Ticket对象
Ticket ticket = new Ticket();
//创建三个线程
new Thread(new Runnable() {
@Override
public void run() {
//调用卖票的方法
for (int i = 0; i < 300; i++) {
ticket.sale();
}
}
},"刘德华").start();
new Thread(new Runnable() {
@Override
public void run() {
//调用卖票的方法
for (int i = 0; i < 300; i++) {
ticket.sale();
}
}
},"张学友").start();
new Thread(new Runnable() {
@Override
public void run() {
//调用卖票的方法
for (int i = 0; i < 300; i++) {
ticket.sale();
}
}
},"黎明").start();
}
}
这是一个Java编程示例,展示了如何使用`synchronized`关键字实现多线程同步,防止在并发环境下出现票数售卖错误。通过创建三个线程模拟刘德华、张学友和黎明同时售票,每个线程调用同一个Ticket对象的sale()方法,确保票的正确售卖和计数。
1300

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



