mfaella/beginning-android-games

Chapter 4, pg: 180, Kindle edition: "while (true) {thread.join()}" ?

Opened this issue · 3 comments

Hi Mario,

Thanks for the excellent book. It is very interesting and enjoyable to read.

I have this code piece I didn't understand:

public void pause() {
  running = false;
  while(true) {
    try {
      renderThread.join();
    } catch (InterruptedException e) {
      // retry
    }
  }
}

For me it looks like an infinite loop, just tried a simple Java example and it 
seems that thread.join() would work fine only without "while(true)", like this:

    public void destroy() {
            System.out.println("Thread will end!");
            try {
                thr.join();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        System.out.println("Thread has ended!");
    }

Adding the "while(true)" will either go in infinite loop or trigger exception 
"unreachable code".

Is this some specific trick to Android?

Many thanks!
Mihai


Original issue reported on code.google.com by rumbur...@gmail.com on 16 May 2012 at 9:25

[deleted comment]
I've the same problem.

He has fixed it in the source code: 
http://code.google.com/p/beginning-android-games/source/browse/trunk/ch04-androi
d-basics/src/com/badlogic/androidgames/SurfaceViewTest.java - where he has 
added a break statement after the renderThread.join() - Then the pause code 
will wait until the render thread dies (renderThread.join()). If it gets 
interrupted, it catch the exception and try again! Else the render thread is 
died and break out of the while loop.

Original comment by fuddiG on 18 May 2012 at 1:43

my bad, this was addressed in ticket 24. solution is:
"It's necessary to add a break after renderThread.join() call."
thanks!

Original comment by rumbur...@gmail.com on 20 May 2012 at 4:26