package com.mth.synchronizedtest;
/*多线程
* 本程序目的:解决卖重复票 还有 负数票的情况
* synchronized这个关键字有两种用法1、放方法名前形成同步方法;2、放在块前构成同步块。
*
* */
public class SynchronizedTest1 implements Runnable {
private int tickets = 100;
// @Override
// public void run() {
// for (int i = 0; i < 50; i++) {
// // 第一种同步块 实现共享
// synchronized (this) {
//
// if (tickets > 0) {
//
// System.out.println(Thread.currentThread().getName()
// + "号窗口卖出" + this.tickets-- + "号票");
//
// }
// }
// }
// }
public synchronized void run() {// 第二种 方法同步
for (int i = 0; i < 50; i++) {
// 同步块 实现共享
if (tickets > 0) {
try {
Thread.sleep(5);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "号窗口卖出"
+ this.tickets-- + "号票");
}
}
};
public static void main(String[] args) {
SynchronizedTest1 test = new SynchronizedTest1();
Thread t1 = new Thread(test);
Thread t2 = new Thread(test);
Thread t3 = new Thread(test);
Thread t4 = new Thread(test);
t1.start();
t2.start();
t3.start();
t4.start();
}
}
本程序目的:解决卖重复票 还有 负数票的情况
最新推荐文章于 2021-12-18 17:42:07 发布