-
-
Save viniciusccarvalho/3a62e2c28fe8d34ff4a9 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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