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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徐升兴 中级黑马   /  2012-10-24 07:33  /  1658 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 徐升兴 于 2012-10-28 07:25 编辑

如题,这是刚刚看到的一个面试题。

评分

参与人数 1黑马币 +10 收起 理由
刘芮铭 + 10

查看全部评分

6 个回复

倒序浏览
就我知道的有两种:
实现Runnable接口 或者继承Thread类

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
继承Thread方法,并重写run方法
class A extends Thread
{
    public void run(){
     }
}
还有一个就是实现Runable接口,并实现run方法
class B implements Runnable
{
   public void run()
   {
   }
{

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
答:一共有两种方式。第一种是继承Thread类。因为Thread类是描述线程的类,子类需要覆写Thread类中的Run()方法,Run()方法中存的是新建线程要运行的代码,创建子类对象,调用start()方法开启线程。  第二种是实现Runnable接口,覆写Runnable中的Run()方法,把Runnable接口的子类的对象作为参数传给Thread类的构造函数,创建Thread类的对象,调用start()方法开启线程。回答完毕。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 李春生 于 2012-10-24 11:00 编辑

两种方式
创建新执行线程有两种方法。一种方法是将类声明为 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();

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
两种,一种是继承 extends Thread  另外一个种是实现Runnable接口 一般我们使用实现Runnable接口
回复 使用道具 举报
java5以前是:有两种实现方法,分别使用new Thread()和new Thread(runnable)形式,第一种直接调用thread的run方法,所以,我们往往使用Thread子类,即new SubThread()。第二种调用runnable的run方法。
java5以后多了一种创建方式:线程池创建多线程的方式:
ExecutorService pool = Executors.newFixedThreadPool(3)
for(int i=0;i<10;i++)
{
  pool.execute(newRunable(){public void run(){}});
}
Executors.newCachedThreadPool().execute(new Runable(){publicvoid run(){}});
Executors.newSingleThreadExecutor().execute(new Runable(){publicvoid run(){}});
  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马