// waiting room can't hold
more than 12! def waitingRoom = new
ArrayBlockingQueue(12)
<==jdk5中对象,取元素时,有则立刻返回;否则,等待
def barber = Executors.newScheduledThreadPool(1)
<==jdk5中对象
barber.scheduleAtFixedRate({
println 'Barber: Next customer
please!' Customer customer =
waitingRoom.take() println
"${customer.name} gets a haircut at ${new
Date().format('H:m:s')}" } as Runnable, 0, 15,
TimeUnit.MINUTES)
2。产生事件
def barberShop = new
PooledActorGroup().reactor {message ->
<==使用GPar完成 switch (message)
{ case
Enter:
println "${message.customer.name} waits for a
haircut..."
waitingRoom.add(message.customer)
break }
}
class Enter
{ Customer customer
}
barberShop << new
Enter(customer: new Customer(name: 'Jerry')) barberShop
<< new Enter(customer: new Customer(name: 'Phil'))
barberShop << new Enter(customer: new Customer(name:
'Bob')) barberShop << new Enter(customer: new
Customer(name: 'Ron'))