Skip to content

Instantly share code, notes, and snippets.

@viniciusccarvalho
Last active December 14, 2015 02:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save viniciusccarvalho/3a62e2c28fe8d34ff4a9 to your computer and use it in GitHub Desktop.
Save viniciusccarvalho/3a62e2c28fe8d34ff4a9 to your computer and use it in GitHub Desktop.
class ConcurrencyTest {
public static void main(String[] args) {
def consumer = new SlowConsumer().start();
def producer = new FastProducer(consumer).start();
100.times {
producer << it
}
[consumer,producer]*.stop()
[consumer,producer]*.join()
}
}
class FastProducer extends DefaultActor {
def target
def FastProducer(SlowConsumer consumer){
this.target = consumer
}
def log = LoggerFactory.getLogger(FastProducer.class)
void act() {
loop() {
react { message ->
target << message
}
}
}
}
class SlowConsumer extends DefaultActor {
def log = LoggerFactory.getLogger(SlowConsumer.class)
void act() {
loop(){
react {
log.info "received message : ${it}"
Thread.sleep(10)
}
}
}
}
//Same thread is used for all SlowConsumers
//output of this:
/*
14:33:05,685 INFO Actor Thread 2 com.emusic.catalog.SlowConsumer:? - received message : 0
14:33:05,704 INFO Actor Thread 2 com.emusic.catalog.SlowConsumer:? - received message : 1
14:33:05,715 INFO Actor Thread 2 com.emusic.catalog.SlowConsumer:? - received message : 2
14:33:05,726 INFO Actor Thread 2 com.emusic.catalog.SlowConsumer:? - received message : 3
14:33:05,737 INFO Actor Thread 2 com.emusic.catalog.SlowConsumer:? - received message : 4
14:33:05,749 INFO Actor Thread 2 com.emusic.catalog.SlowConsumer:? - received message : 5
14:33:05,760 INFO Actor Thread 2 com.emusic.catalog.SlowConsumer:? - received message : 6
14:33:05,771 INFO Actor Thread 2 com.emusic.catalog.SlowConsumer:? - received message : 7
14:33:05,782 INFO Actor Thread 2 com.emusic.catalog.SlowConsumer:? - received message : 8
14:33:05,794 INFO Actor Thread 2 com.emusic.catalog.SlowConsumer:? - received message : 9
14:33:05,805 INFO Actor Thread 2 com.emusic.catalog.SlowConsumer:? - received message : 10
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment