黑马程序员技术交流社区

标题: Java中Runnable和Thread的区别 [打印本页]

作者: 黄方    时间: 2012-3-6 22:23
标题: Java中Runnable和Thread的区别
{:soso_e183:}
作者: 泮和顺    时间: 2012-3-6 22:46
简单的区别就是一个是接口 一个是类 呵呵
作者: 泮和顺    时间: 2012-3-6 22:50
创建新执行线程有两种方法。一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法。接下来可以分配并启动该子类的实例。例如,计算大于某一规定值的质数的线程可以写成:



--------------------------------------------------------------------------------

     class PrimeThread extends Thread {
         long minPrime;
         PrimeThread(long minPrime) {
             this.minPrime = minPrime;
         }

         public void run() {
             // compute primes larger than minPrime
              . . .
         }
     }

--------------------------------------------------------------------------------

然后,下列代码会创建并启动一个线程:


     PrimeThread p = new PrimeThread(143);
     p.start();
创建线程的另一种方法是声明实现 Runnable 接口的类。该类然后实现 run 方法。然后可以分配该类的实例,在创建 Thread 时作为一个参数来传递并启动。采用这种风格的同一个例子如下所示:



--------------------------------------------------------------------------------

     class PrimeRun implements Runnable {
         long minPrime;
         PrimeRun(long minPrime) {
             this.minPrime = minPrime;
         }

         public void run() {
             // compute primes larger than minPrime
              . . .
         }
     }

--------------------------------------------------------------------------------

然后,下列代码会创建并启动一个线程:


     PrimeRun p = new PrimeRun(143);
     new Thread(p).start();
CTRL+C过来的 呵呵
作者: 刘基军    时间: 2012-3-6 23:24
/*
13.        线程创建方法一:子类
14.        */  
15.        Thread thread1 = new Thread(){  
16.                @Override   
17.                public void run()  
18.                {  
19.                    //code   
20.                    System.out.println(Thread.currentThread().getName()+" run...");  
21.                }  
22.            };  
23.        thread1.start();  
24.         
25.        /*
26.        线程创建方法二:Runnable(更能体现面对对象思想)
27.        */  
28.        Thread thread2 = new Thread(new Runnable(){  
29.                @Override  
30.                public void run()  
31.                {  
32.                    //code   
33.                    System.out.println(Thread.currentThread().getName()+" run...");  
34.                }  
35.            });  
36.        thread2.start();  

作者: 张洪力    时间: 2012-3-6 23:37
在程序开发中只要是多线程,肯定永远以实现Runnable接口为主,因为实现Runnable接口相比
继承Thread类更适合于资源的共享。Thread类也是Runnable接口的子类。

  
作者: 尹震    时间: 2012-3-7 12:40
Thread是类,被继承,Runnable是接口,被实现,其实目的是一样的,都是要重写run()方法,实际上,run()方法是Runnable独有的,但Thread类本身已经封装了Runnable接口,所以继承Thread类时,也可以调用run()方法。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2