さっきのを、もうちょっと汎用化させて、コルーチンを作ってみた。コルーチンにすると、スレッドが競合することがなくなるので、排他制御やらなんやら考えるのはずいぶん楽になる。 これがサンプルコード。sleepしている最中に他のスレッドが割り込んでいないことに注目。 public class CoMain{ static Coroutine c; public static void main (String[] args){ init(); while (c.yield()); System.out.println("main finished"); } static class Test implements Runnable{ int p; Test (int p) { this.p = p;} public void run (){ for (int i=0; i<5; ++i){ c.y