第二个是无效的,据我所知和测试.
更常见的是创建一个新的Runnable实现:
Thread th=new Thread(new Runnable() {
@Override
public void run() {
// This implements Runnable.run
}
});
现在你可以覆盖普通线程的run方法:
Thread th=new Thread() {
@Override
public void run() {
// This overrides Thread.run
}
};
…但我个人更喜欢在创建线程时单独指定Runnable.
现在你在最后注意到的区别仅在于表达式是否用作参数(例如,用于addActionListener方法或Thread(Runnable)构造函数,或者它是否只是直接赋值给变量.想想全新的TypeName( ){…}作为单个表达式,它只是区别:
Thread th = expression;
和
Thread th = new Runnable(expression);