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

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

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

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

6 个回复

正序浏览
zengming13 发表于 2014-4-22 15:43
定时器也是一种创建线程的方式啊

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

查看全部评分

回复 使用道具 举报
  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

查看全部评分

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