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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 官珺伟 于 2014-4-22 19:33 编辑

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

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

6 个回复

倒序浏览
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(){}});

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报 1 0
java有两种方法创建线程,一种是扩展java.lang.Thread类,另一种是通过实现java.lang.Runnable接口。
不管使用哪一种方法创建线程,都必须使用run方法。因为执行一个线程就是执行run方法里的代码。Thread类和Runnable接口提供的run方法没有提供任何操作,因此,在创建线程时要覆盖run方法,以实现多线程的目的。
回复 使用道具 举报
  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的构造方法)
复制代码

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
如何实现多线程的?
        线程:就是进程中一个独立的控制单元。
        线程在控制着进程的执行。一个进程中至少存在一个线程。
        创建线程的第一种方式:继承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方法。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
zengming13 发表于 2014-4-22 15:43
定时器也是一种创建线程的方式啊

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

点评

你的签名也太酷了吧  发表于 2014-4-22 19:14
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马