关于java thread中一个经典例子的问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 17:24:06
java thread中一个经典的例子就是关于cutomer和producer的同步关系,我想请教一下下面这个例子是否可以确保每个顾客能按照先来后到的顺序被服务。例如:clerk serving ticket 1 是否能确保clerk serving 的就是第一个拿ticket1的那个人。源程序如下:
class Customer:
public class Customer extends Thread {
private static int number = 10000; // Initial ID number
private int id;
private TakeANumber takeANumber;
public Customer( TakeANumber gadget ) {
id = ++number;
takeANumber = gadget;
}
public void run() {
try {
sleep((int)(Math.random() * 2000));
takeANumber.nextNumber(id);
} catch (InterruptedException e) {
System.out.println("Exception: " + e.getMessage() );
}
} // run()
} // Customer
class Clerk:
public class Clerk extends Thread {
private TakeANumber takeANumber;
public Clerk(TakeANumber gadget) {
takeANumber = gadget;

生产者消费者的问题?我们也做过这个练习,两个线程的级别都一样高,生产者消费者的数量一样,两个线程没有阻断线程的方法(例如sleep或者wait方法)或者睡眠,等待的时间都一致,基本就是生产一个消费一个了。