https://github.com/anamorphosee/jcontinue
Java Continuation Library
https://github.com/anamorphosee/jcontinue
Last synced: 24 days ago
JSON representation
Java Continuation Library
- Host: GitHub
- URL: https://github.com/anamorphosee/jcontinue
- Owner: Anamorphosee
- Created: 2016-02-22T11:34:04.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2016-05-09T20:08:23.000Z (about 10 years ago)
- Last Synced: 2025-03-01T06:42:43.834Z (over 1 year ago)
- Language: Java
- Size: 59.6 KB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# JContinue
Java [Continuation](https://en.wikipedia.org/wiki/Continuation) Library
## Usage example
```java
package org.jcontinue.utils.test;
import org.jcontinue.continuation.Continuation;
import org.jcontinue.utils.ContinuationClassTransformerClassLoader;
import org.jcontinue.continuation.Task;
public class ReadmeExample {
public static void main(String[] args) throws Exception {
ClassLoader continuationClassLoader = new ContinuationClassTransformerClassLoader();
// transform ReadmeExample class for continuation
Class> transformedReadmeExample = continuationClassLoader.loadClass(ReadmeExample.class.getName());
Object transformedReadmeExampleInstance = transformedReadmeExample.newInstance();
// invoke 'performExample' method on transformed class
transformedReadmeExample.getMethod("performExample").invoke(transformedReadmeExampleInstance);
}
public void performExample() {
ExampleTask task = new ExampleTask();
Continuation.Context context = Continuation.perform(task);
while (!context.isFinished()) {
System.out.println("counter: " + task.counter);
context = Continuation.resume(context);
}
}
public static class ExampleTask implements Task {
public int counter;
@Override
public void perform() {
for (int i = 0; i < 10; i++) {
setCounterAndSuspend(i);
}
}
private void setCounterAndSuspend(int counter) {
this.counter = counter;
Continuation.suspend();
}
}
}
```