车票类:
异常类:
测试:
开启了5个窗口,这5个窗口都是做相同的一件事:出售车票。
package com.xs.thread;
public class Ticket {
private int t;
public Ticket(int t) {
this.t = t;
}
public synchronized int getTicket() throws NoTicketsException {
if (t < 1) {
throw new NoTicketsException("No ticket!");
}
return t--;
}
}
异常类:
package com.xs.thread;
public class NoTicketsException extends Exception {
private static final long serialVersionUID = 1L;
public NoTicketsException() {
super();
}
public NoTicketsException(String message) {
super(message);
}
}
测试:
package com.xs.thread;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
final Ticket ticket = new Ticket(100);
Runnable runnable = new Runnable() {
private volatile boolean hasTicket = true;
public void run() {
while (hasTicket) {
try {
System.out.println(Thread.currentThread().getName()
+ " --> " + ticket.getTicket());
} catch (NoTicketsException e) {
System.out.println(e.getMessage());
hasTicket = false;
}
}
}
};
new Thread(runnable).start();
new Thread(runnable).start();
new Thread(runnable).start();
new Thread(runnable).start();
new Thread(runnable).start();
}
}
开启了5个窗口,这5个窗口都是做相同的一件事:出售车票。