黑马程序员技术交流社区

标题: 分享一道别人的面试题:java中有几种方法可以实现一个线... [打印本页]

作者: 张周飞    时间: 2014-12-24 10:10
标题: 分享一道别人的面试题:java中有几种方法可以实现一个线...
本帖最后由 张周飞 于 2014-12-24 10:12 编辑

                                                                       java中有几种方法可以实现一个线程?

java5以前,有如下两种:
            有两种实现方法:分别使用new Thread()new Thread(runnable)形式
                  第一种直接调用thread的run方法,所以,我们往往使用Thread子类,即new SubThread()。
                  第二种调用runnable的run方法。
第一种:
new Thread(){}.start();这表示调用Thread子类对象的run方法,new Thread(){}表示一个Thread的匿名子类的实例对象,子类加上run方法后的代码如下:
new Thread(){
   public void run(){
   }
}.start();

第二种:
new Thread(new Runnable(){}).start();这表示调用Thread对象接受的Runnable对象的run方法,new Runnable(){}表示一个Runnable的匿名子类的实例对象,runnable的子类加上run方法后的代码如下:
new Thread(new Runnable(){
               public void run(){
               }   
        }
   ).start();

从java5开始,还有如下一些线程池创建多线程的方式:
ExecutorService pool = Executors.newFixedThreadPool(3)
for(int i=0;i<10;i++)
{
pool.execute(new Runable(){public void run(){}});
}
Executors.newCachedThreadPool().execute(new Runable(){public void run(){}});
Executors.newSingleThreadExecutor().execute(new Runable(){public void run(){}});

作者: 滔哥    时间: 2014-12-24 10:12
棒!,,,这就是大婶!
作者: xiao飞    时间: 2014-12-24 10:36
真给力,虽然最后一个不怎么看的懂,不过至少知道多线程还有其他的方式
作者: as604049322    时间: 2014-12-24 10:58
线程池不懂,有待学习~
作者: cs8630323    时间: 2014-12-24 12:12
第四种:FutureTask




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