Yes indeed you are. And the first time you call print, you create a Runnable object which contains the "i" from the first time. The second time you call print, you use that same Runnable object. It still contains the "i" from the first time. So it's what jtahlborn said. And that would be true if you were using Generics (the ...