!7 static JTextField tf; static JTextArea textArea; static ConcurrentEvaluator currentEval; p-substance { showFrame(northAndCenter(tf = jtextfield(), textArea = jtextarea())); //final ReliableSingleThread thread = new(f update); //onEnter(tf, r { thread.trigger() }); onEnter(tf, f update); } svoid update { if (currentEval != null) currentEval.cancel(); final new ConcurrentEvaluator eval; currentEval = eval; eval.add(func { sleepSeconds(1); print("yo"); ret "Hello 2 at " + now(); }); eval.add(func { ret "Hello at " + now(); }); eval.onNewResult = r { updateResults(eval) }; eval.start(); } svoid updateResults(ConcurrentEvaluator eval) { L l = notNullOnly(eval.results()); S text = lines(allToString(l)); setText(textArea, text); } static int coresToUse() { ret max(1, numberOfCores()-1); }