同步操作将从 dwing/sharecode 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
import java.util.function.IntConsumer;public class Prime3c {private static final Runnable[] readyStack = new Runnable[10000];private static int readyStackSize;static void loop() {var s = readyStack;for (int n; (n = readyStackSize) > 0; ) {var r = s[--n];s[n] = null;readyStackSize = n;r.run();}}static final class IntChan {private Runnable waitR;private int value;private boolean hasValue;private void pause(Runnable r) {waitR = r;}private void tryResume() {var r = waitR;if (r != null) {waitR = null;int n = readyStackSize;readyStack[n] = r;readyStackSize = n + 1;}}void put(int v, Runnable r) {if (hasValue) {pause(() -> {value = v;hasValue = true;tryResume();r.run();});return;}value = v;hasValue = true;tryResume();r.run();}void get(IntConsumer c) {if (!hasValue) {pause(() -> {hasValue = false;tryResume();c.accept(value);});return;}hasValue = false;tryResume();c.accept(value);}}private static void generate(IntChan ch) {generate(ch, 2);}private static void generate(IntChan ch, int i) {ch.put(i, () -> generate(ch, i + 1));}private static void filter(IntChan in, IntChan out, int prime) {in.get(i -> {if (i % prime != 0)out.put(i, () -> filter(in, out, prime));elsefilter(in, out, prime);});}public static void main(String[] args) {var count = args.length > 0 ? Integer.parseInt(args[0]) : 10000;var ch = new IntChan();generate(ch);new Runnable() {int i = 0;IntChan ch0 = ch;@Overridepublic void run() {ch0.get(prime -> {if (++i == count) {System.out.println(prime);System.exit(0);}var ch1 = ch0;var ch2 = new IntChan();filter(ch1, ch2, prime);ch0 = ch2;run();});}}.run();loop();}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。