Q:

Runnable code is looping its actions

I didn't understand the code snippets below. This is the code snippets I took from AsynchronousChannelGroupImpl class of android. These below things I didn't understand.
1) var1 is assigned as final, but we are changing it in the body of execute. 
2) var1 points the memory address of Runnable object that is created from "new Runnable() {....}". Inside that Runnable object's heap memory, there is run() method.  This run() method uses AccessController class variable to reach up to doPrivileged() method of AccessControler, which contains memory address of newly created PrivilegedAction object and var3 as its parameters. But This newly created PrivilegedAction object again calls its run() method to call var1's run() method. It's kind of looping the actions. 
3)So var1 points to fixed position always because its final. It can call its run method because run() method is inside it's memory address. But, new PrivilegedAction object, you create each time, is not defined and consistent. We can't say this object contains this much heap memory space because insider there, it is asking var1 again to run its run() method as var1.run()
I wanna know how this snippet is changing the memory structure inside system? I want to know in terms of Computer Architecture perspective.
public final void execute(final Runnable var1) {
        SecurityManager var2 = System.getSecurityManager();
        if(var2 != null) {
            final AccessControlContext var3 = AccessController.getContext();
            var1 = new Runnable() {
                public void run() {
                    AccessController.doPrivileged(new PrivilegedAction() {
                        public Void run() {
                            var1.run();
                            return null;
                        }
                    }, var3);
                }
            };
        }

        this.executeOnPooledThread(var1);
    }

A:

Java decompiled byte code is not for the programmer. Dont put your logic there.

