JAVA中的接口(Thread类和他的接口Runnable)
接口
java中的接口是对符合这个接口的一些类的需求,接口一般只含方法声明没有实现。
Runnable接口
Runnable是一个接口,只含有一个Run方法的声明(没有定义)。
new一个接口是实例化一个匿名内部类(aaaa不是这个类的名字)
Runnable aaaa = new Runnable()
{
@Override
//此匿名内部类实现了Runnable接口 ,必须含有run方法
public void run(){
}
}
匿名内部类的反编译对应的类名是外部类$随机字符串
,如果是内部类的话反编译对应的类名是外部类$内部类
。
Thread类实现了Runnable接口
Thread类实现了Runnable接口,所以其含有Run方法。
public class Text2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Runnable runnable=new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("i am new Runnable(){xxx}");
}
};
Thread thread=new Thread(runnable);
thread.start();
}
}
上述代码会执行内部类runnable的run函数,实际是因为thread类的构造函数参数为Runnable对象,并且有一个target字段,会将runnable对象赋给此字段。在调用thread.start()函数时会执行thread.run函数,此函数会先判断target字段的值是否为NULL,如果不为NULL就调用target.Run(),即上述代码内部类的Run()。