关于Runable接口和Thread的构造器
2007-04-01 21:03
288 查看
//在注释的地方选择合适的选项填入,以保证程序可以从1记数到100
class Counter
{
public int startHere=1;
public int endHere=100;
public static void main(String[] args)
{
new Counter().go();
}
void go()
{
//**********
Thread t=new Thread(a);
t.start();
}
}
A. Thread a=new Thread()
{
public void run()
{
for (int i=startHere;i<=endHere;i++)
System.out.println(i);
}
};
B. Runnable a=new Runnable()
{
public void run()
{
for (int i=startHere;i<=endHere;i++)
System.out.println(i);
}
};
我一看,就选择了B,可以我错了,答案是AB.
我觉得就纳闷了,怎么Thread的构造器怎么还有Thread(Thread t)这种形式的啊?
哦,仔细想想,应该是Implicit Casting的情况,因为Thread类实现了Runnable接口,所以Thread类的匿名子类可以上溯造型到Runnable型,作为Runnable型的参数传入Thread构造器.
不知道大家的看法如何?
-------------------------------------------------------------------------------------------------
同意。
Thread当然也是Runnable的了。
------------------------------------------------------------------------------------------------
原因就是如此,不过不只是匿名子类可以,Thread类本来就可以被强制转换为Runnable类型
class Counter
{
public int startHere=1;
public int endHere=100;
public static void main(String[] args)
{
new Counter().go();
}
void go()
{
//**********
Thread t=new Thread(a);
t.start();
}
}
A. Thread a=new Thread()
{
public void run()
{
for (int i=startHere;i<=endHere;i++)
System.out.println(i);
}
};
B. Runnable a=new Runnable()
{
public void run()
{
for (int i=startHere;i<=endHere;i++)
System.out.println(i);
}
};
我一看,就选择了B,可以我错了,答案是AB.
我觉得就纳闷了,怎么Thread的构造器怎么还有Thread(Thread t)这种形式的啊?
哦,仔细想想,应该是Implicit Casting的情况,因为Thread类实现了Runnable接口,所以Thread类的匿名子类可以上溯造型到Runnable型,作为Runnable型的参数传入Thread构造器.
不知道大家的看法如何?
-------------------------------------------------------------------------------------------------
同意。
Thread当然也是Runnable的了。
------------------------------------------------------------------------------------------------
原因就是如此,不过不只是匿名子类可以,Thread类本来就可以被强制转换为Runnable类型
相关文章推荐
- Java 多线程——Thread类和Runable接口
- Thread类和Runable接口
- 【Java多线程学习】Java多线程的两种实现方式:继承Thread类 & 实现Runable接口
- Thread类和Runable接口
- Java 多线程——Thread类和Runable接口
- JavaSE学习52:细说多线程之Thread类和Runable接口
- 对Thread类的继承、Runable接口的实现,以及线程池的简单理解
- 关于Runable和Thread的使用
- java两种启动线程方法根本不同,Thread继承和实现Runable接口
- JavaSE学习52:细说多线程之Thread类和Runable接口
- 浅谈多线程,以及比较Thread类与Runable接口
- 实现Runable接口比继承Thread类所具有的优势
- 继承Thread和实现Runable接口的区别
- 在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口。
- JavaSE学习52:细说多线程之Thread类和Runable接口
- 关于AndroidRuntime: FATAL EXCEPTION: GLThread 10 java.lang.IllegalArgumentException问题
- 关于afxbeginthread时WaitForMultipleObjects不起作用
- 关于显式接口实现
- 线程 创建和启动线程的两种方式 实现Runnable接口 继承Thread类 重写唯一方法run()
- WCF后续之旅(11): 关于并发、回调的线程关联性(Thread Affinity)