Skip to content

Instantly share code, notes, and snippets.

@sleyzerzon
Forked from mike-neck/JcspTest.java
Created September 19, 2016 23:48
Show Gist options
  • Save sleyzerzon/80a3d15172bebcfe7c12904e9a73ca2c to your computer and use it in GitHub Desktop.
Save sleyzerzon/80a3d15172bebcfe7c12904e9a73ca2c to your computer and use it in GitHub Desktop.
JCSP - Communicating Sequential Processes for Java
dependencies {
compile 'org.codehaus.jcsp:jcsp:1.1-rc5'
groovy 'org.codehaus.gpars:gpars:1.0-beta-2'
}
package org.mikeneck.jcsp;
import org.jcsp.lang.*;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author : mike
* @since : 12/07/07
*/
public class JcspTest {
private static Logger logger = LoggerFactory.getLogger(JcspTest.class);
@Test
public void test () {
One2OneChannel<Integer> channel = Channel.one2one();
Parallel parallel = new Parallel(new CSProcess[]{
new Send(channel.out()), new Read(channel.in())});
parallel.run();
}
class Send implements CSProcess {
private ChannelOutput<Integer> output;
Send (ChannelOutput<Integer> output) {
this.output = output;
}
@Override
public void run() {
for (int i = 0; i < 10; i += 1) {
logger.info("Sending value {}", String.valueOf(i));
output.write(i);
try {
Thread.sleep(200L);
} catch (InterruptedException e) {
}
}
}
}
class Read implements CSProcess {
private ChannelInput<Integer> input;
Read (ChannelInput<Integer> input) {
this.input = input;
}
@Override
public void run() {
int read = 0;
while (read < 10 -1) {
read = input.read();
logger.info("Receiving value {}", String.valueOf(read));
try {
Thread.sleep(500L);
} catch (InterruptedException e) {
}
}
}
}
}
<dependencies>
<dependency>
<groupId>org.codehaus.jcsp</groupId>
<artifactId>jcsp</artifactId>
<version>1.1-rc5</version>
</dependency>
</dependencies>
02:16:19.013 [org.mikeneck.jcsp.JcspTest$Send@53c9f789] INFO org.mikeneck.jcsp.JcspTest - Sending value 0
02:16:19.017 [main] INFO org.mikeneck.jcsp.JcspTest - Receiving value 0
02:16:19.217 [org.mikeneck.jcsp.JcspTest$Send@53c9f789] INFO org.mikeneck.jcsp.JcspTest - Sending value 1
02:16:19.518 [main] INFO org.mikeneck.jcsp.JcspTest - Receiving value 1
02:16:19.718 [org.mikeneck.jcsp.JcspTest$Send@53c9f789] INFO org.mikeneck.jcsp.JcspTest - Sending value 2
02:16:20.018 [main] INFO org.mikeneck.jcsp.JcspTest - Receiving value 2
02:16:20.218 [org.mikeneck.jcsp.JcspTest$Send@53c9f789] INFO org.mikeneck.jcsp.JcspTest - Sending value 3
02:16:20.518 [main] INFO org.mikeneck.jcsp.JcspTest - Receiving value 3
02:16:20.718 [org.mikeneck.jcsp.JcspTest$Send@53c9f789] INFO org.mikeneck.jcsp.JcspTest - Sending value 4
02:16:21.018 [main] INFO org.mikeneck.jcsp.JcspTest - Receiving value 4
02:16:21.218 [org.mikeneck.jcsp.JcspTest$Send@53c9f789] INFO org.mikeneck.jcsp.JcspTest - Sending value 5
02:16:21.518 [main] INFO org.mikeneck.jcsp.JcspTest - Receiving value 5
02:16:21.718 [org.mikeneck.jcsp.JcspTest$Send@53c9f789] INFO org.mikeneck.jcsp.JcspTest - Sending value 6
02:16:22.018 [main] INFO org.mikeneck.jcsp.JcspTest - Receiving value 6
02:16:22.218 [org.mikeneck.jcsp.JcspTest$Send@53c9f789] INFO org.mikeneck.jcsp.JcspTest - Sending value 7
02:16:22.518 [main] INFO org.mikeneck.jcsp.JcspTest - Receiving value 7
02:16:22.718 [org.mikeneck.jcsp.JcspTest$Send@53c9f789] INFO org.mikeneck.jcsp.JcspTest - Sending value 8
02:16:23.018 [main] INFO org.mikeneck.jcsp.JcspTest - Receiving value 8
02:16:23.218 [org.mikeneck.jcsp.JcspTest$Send@53c9f789] INFO org.mikeneck.jcsp.JcspTest - Sending value 9
02:16:23.518 [main] INFO org.mikeneck.jcsp.JcspTest - Receiving value 9
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment