这个明白吗?
JButton button = new JButton("Hello");
button.addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent e)
    {
     }
}
和你说的是一样的道理,r 是 Runnable类型的对象,并且在声名的时候已经实现了该接口中的唯一方法public void run(),也就是说new Runnable(){public void run(){}}是一个实现了接口的对象。所以这个和分开写是一样的。
Runnable r;
class threadA implements Runnable
{
    public void run()
    {}
}
r = new threadA();