Java 生成器模式基于线程互相等待的实现,可使用 yield
语法实现惰性求值的迭代器模式。
package org.xstars.yield;
import java.util.Iterator;
public abstract class Generator<E>
implements AutoCloseable, Cloneable, Runnable, Iterable<E>, Iterator<E>
Generator<Integer> generateRange(int max) {
return new Generator<Integer>() {
@Override
public void generate() {
for (int i = 0; i < max; i++) {
yield(i);
}
}
};
}
try (Generator<Integer> range10 = generateRange(10)) {
for (int test : range10) {
if (test >= 5) {
break;
}
System.out.println(test);
}
}