黑马程序员技术交流社区

标题: 谁能告诉我多线程创建的三种方式分别是什么? [打印本页]

作者: 官珺伟    时间: 2014-4-22 15:32
标题: 谁能告诉我多线程创建的三种方式分别是什么?
本帖最后由 官珺伟 于 2014-4-22 19:33 编辑

谁能告诉我多线程创建的三种方式分别是什么?

用简单的代码就可以。别搞得太复杂

作者: 阿旺    时间: 2014-4-22 15:37
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(){}});

作者: z1342802487    时间: 2014-4-22 15:44
java有两种方法创建线程,一种是扩展java.lang.Thread类,另一种是通过实现java.lang.Runnable接口。
不管使用哪一种方法创建线程,都必须使用run方法。因为执行一个线程就是执行run方法里的代码。Thread类和Runnable接口提供的run方法没有提供任何操作,因此,在创建线程时要覆盖run方法,以实现多线程的目的。
作者: 姜姗姗    时间: 2014-4-22 18:10
  1. 创建线程方式之一
  2. 继承Thread类
  3.         1,子类覆盖父类中的run方法,将线程运行的代码放在run方法中
  4.         2,建立子类对象的同时线程也被创建
  5.         3,通过调用start方法开启线程(start方法会自动调用run方法)

  6. 创建线程方式之二
  7. 实现Runable接口
  8.         1,子类覆盖接口中的run方法
  9.         2,同诺Thread类创建线程吗,并实现了Runnable接口的子类对象作为参数传递                给了Thread的类的构造函数
  10.         3,Thread类对象调用start方法开启线程
  11. (第二种创建线程方式,源于查阅了Thread的构造方法)
复制代码

作者: 思绪    时间: 2014-4-22 18:45
如何实现多线程的?
        线程:就是进程中一个独立的控制单元。
        线程在控制着进程的执行。一个进程中至少存在一个线程。
        创建线程的第一种方式:继承Thread类。
        步骤:
        1)定义类继承Thread。
        2)复写Thread类中的run方法。
        3)调用线程的start方法,
                该方法两个作用:启动线程,调用run方法。
        创建线程的第二种方式:实现Runable接口
        步骤:
        1)定义类实现Runable接口
        2)覆盖Runable接口中的run方法。
        3)通过Thread类建立线程对象。
        4)将Runable接口的子类对象作为实际参数传递给Thread类的构造函数。
        5)调用Thread类的start方法开启线程并调用Runable接口子类的run方法。
作者: Kelvinhu    时间: 2014-4-22 19:07
zengming13 发表于 2014-4-22 15:43
定时器也是一种创建线程的方式啊

0 0定时器。。不能算作是多线程。。一个定时器只能一个线程




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