📄 ticketsystem.java
字号:
package thread;
public class TicketSystem {
/**
* @param args
*/
public static void main(String[] args) {
SellThread st = new SellThread();
new Thread(st).start();
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
st.setFlag(true);
new Thread(st).start();
// new Thread(st).start();
// new Thread(st).start();
}
}
class SellThread implements Runnable {
private int tickets = 100;
private boolean flag = false;
private Object o = new Object();
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
public void run() {
if (!flag) {
while (true)
sell();
} else {
while (true) {
synchronized (o) {
try {
Thread.sleep(10);
} catch (Exception e) {
e.printStackTrace();
}
synchronized (this) {
if (tickets > 0) {
System.out.println("o: "
+ Thread.currentThread().getName()
+ " sells " + tickets);
tickets--;
}
}
}
}
}
}
public synchronized void sell() {
synchronized (o) {
if (tickets > 0) {
try {
Thread.sleep(10);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("sell(): "
+ Thread.currentThread().getName() + " sells "
+ tickets);
tickets--;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -