final じゃないと、こんなのがややこしいからジャマイカ

public void test() {
 int x = 1;
 Runnable r = new Runnable() { public void run() { System.out.println(x); } }
 x = 2;
 r.run();
}