简单模拟Java中创建多线程的两种方法

 

【文章标题】简单模拟Java中创建多线程的两种方法
【文章作者】曾健生

【作者邮箱】[email protected]

【作者QQ190678908

【作者博客】http://blog.csdn.net/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

 

你可能感兴趣的:(java,thread,多线程,String,Class,interface)