I am trying to run following code on emulator (it's an interview
puzzle with deliberate racing condition) and I observe all threads
stuck on the first x++ and join() never executed.

If I comment out x++ everything comes to completion...

Is it something I do wrong or static access on dalvik-emulator is
broken somehow?
Should I file a bug?

I have the latest sdk update for the time of writing:

    static {
        try {
            test();
        } catch (InterruptedException e) {
            throw new Error(e);
        }
    }


    static int x;

    public static void test() throws InterruptedException {
        Thread[] t = new Thread[5];
        for (int i = 0; i < 5; i++) {
            final int k = i;
            t[i] = new Thread() {
                public void run() {
                    for (int j = 0; j < 5; j++) {
                        x++;
                    }
                    System.out.println("done[" + k + "]");
                }
            };
            t[i].start();
        }
        for (int i = 0; i < 5; i++) {
            t[i].join();
        }
        System.out.println("x=" + x);
    }

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to