【文章标题】简单模拟Java中创建多线程的两种方法
【文章作者】曾健生
【作者邮箱】zengjiansheng1@126.com
【作者QQ】190678908
【作者博客】http://blog.youkuaiyun.com/newjueqi
【编程环境】JDK 1.6.0_01
【作者声明】欢迎转载文章,但转载请保留文章的完整性以及注明文章的出处。
*******************************************************************************
在java中,常见的创建多线程的方法有两种:
1. 继承Thread类后覆盖其中的public void run()方法。
2. 创建一个线程类Thread的实例,在构造函数中把实现Runnable接口后的实例对象当成参数传递进去。
从这两种方法可看出,这两种实现都和Thread类有联系,那应该怎么设计Thread类的体系才能实现这两种创建方法呢?
下面的代码利用接口和继承简单实现了上述了两种创建方法,从中可以领略一下面向对象的魅力^-^(真正的Thread类实现不会这么简单,这里的代码只是简单的实现它的设计)
/*
演示了多线程两种实现方法的实现机制
*/
//自定义的Runnable接口
interface MyRunnable
{
public void run();
}
//自定义的Thread类
class MyThread
{
private MyRunnable mr;
public MyThread(){}
public MyThread( MyRunnable mr )
{
this.mr=mr;
}
//这里就是关键
//1.如果用继承MyThread类的方法实现,那么子类调用的是被覆盖的后的run()方法
//2.如果用实现Runnable接口的run()方法实现,那么调用的是实现接口的run方法(即mr.run())
public void run()
{
mr.run();
}
public void start()
{
this.run();
}
}
/*
//通过继承的方法实现多线程
class Test extends MyThread
{
public void run()
{
System.out.println( " extends run " );
}
}
*/
//通过实现接口的方法实现多线程
class Test implements MyRunnable
{
public void run()
{
System.out.println( " interface run " );
}
}
class Demo
{
public static void main( String args[])
{
//通过继承的方法实现多线程
/* Test t=new Test();
t.start();
*/
//通过实现接口的方法实现多线程
Test t=new Test();
MyThread mt=new MyThread( t );
mt.start();
}
}
用继承的方法运行结果如图1:
图1
用实现接口的方法运行结果如图2:
图2