A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄方 中级黑马   /  2012-3-6 22:23  /  3006 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

{:soso_e183:}

评分

参与人数 1黑马币 +2 收起 理由
老罗 + 2

查看全部评分

5 个回复

倒序浏览
简单的区别就是一个是接口 一个是类 呵呵
回复 使用道具 举报
创建新执行线程有两种方法。一种方法是将类声明为 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过来的 呵呵
回复 使用道具 举报
/*
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();  
回复 使用道具 举报
在程序开发中只要是多线程,肯定永远以实现Runnable接口为主,因为实现Runnable接口相比
继承Thread类更适合于资源的共享。Thread类也是Runnable接口的子类。

  
回复 使用道具 举报
Thread是类,被继承,Runnable是接口,被实现,其实目的是一样的,都是要重写run()方法,实际上,run()方法是Runnable独有的,但Thread类本身已经封装了Runnable接口,所以继承Thread类时,也可以调用run()方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马