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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张海洋 中级黑马   /  2013-3-24 22:09  /  1565 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张海洋 于 2013-3-24 22:41 编辑

多线程是怎么实现的,为什么要实现多线程?

5 个回复

倒序浏览
实现多线程有两种方法,继承Thread类复写run方法,调用start方法开启线程。或者实现Runnable接口,复写run方法,调用start方法开启线程
继承Thread类:
public class MyThread extends Thread //继承Thread类
{
  public void run() //复写run方法
       {
   System.out.println("MyThread.run()");
  }
}
public static void main(String[] args)
{
   MyThread myThread1 = new MyThread();
    MyThread myThread2 = new MyThread();
    myThread1.start();//start开启线程
    myThread2.start();
}

实现Runnable接口
public class MyThread implements Runnable
{
  public void run() //复写run方法
       {
   System.out.println("MyThread.run()");
  }
}
public static void main(String[] args)

     MyThread myThread = new MyThread();
     Thread thread = new Thread(myThread);
     thread.start();//start开启线程

多线程好处当然是高效
回复 使用道具 举报
线程,就是进程中的一个独立控制单元,线程控制着进程的执行。实现多线程,可以让多个方法或程序同时运行。

创建线程,有两种方式。
1.继承Thread类   1定义继承Thread的类,2复写Thread中的run方法,3调用线程的start方法。
2实现Runable接口    1定义实现Runable接口,2覆盖Runable接口中的run方法,3通过Thread类建立线程对象,4将Runable接口的子类对象作为实参传给Thread类的构造函数,5调用Thread类的start方法开启线程,6并调用Runable接口子类的run方法。
回复 使用道具 举报
在java中实现多线程有两种方式
1.继承Thread类
2.实现Runnable接口

案例1(继承Thread实现多线程)
  1. class ThreadDemo extends Thread{
  2.         public void run(){
  3.                System.out.println("我是"+getName());
  4.         }
  5. }
复制代码
  1. public class Demo{
  2.          public static void main(String[] args){
  3.                 ThreadDemo td=new ThreadDemo();
  4.                 td.start();
  5.         }
  6. }
复制代码
案例2(通过实现Runnable接口来实现多线程)
  1. class ThreadDemo implements Runnable{
  2.        public void run(){
  3.                 System.out.println("我是:"+getName());
  4.        }
  5. }
复制代码
  1. public class Demo{
  2.          public static void main(String[] args){
  3.                new Thread(new ThreadDemo()).start();
  4.         }
  5. }
复制代码
上面这两种方式都可以实现多线程,但推荐使用第二种实现接口的方式,因为java是不支持多继承的,如果用继承Thread的方式实现了多线程,然而此时此类需要再继承一个来,来增加程序的扩展性,显然如果此类已经继承了Thread就不可能还能去继承别的类。而如果你是实现Runnable接口的方式来实现多线程的。却可以。

问:使用多线程的好处?
答:使用多线程最大的好处就是,可以同时处理多个任务,然后就是可以提高程序的效率。
回复 使用道具 举报
嘿嘿我看了楼上的,所以我就不再说怎么实现多线程了呢,至于为什么要实现多线程的话,我觉得这是和我们日常生活搭边的吧,就像我们去买火车票的时候要是只有一个窗口在卖票,那效率就低了。。。所以要多开几个窗口进行同样的操作卖票。还有就是日常生活的存钱也是的
回复 使用道具 举报
实现多线程有三种:
        (1)继承Thread类,重写run函数
                创建:
                class xx extends Thread{
                  public void run(){
                        Thread.sleep(1000)        //线程休眠1000毫秒,sleep使线程进入Block状态,并释放资源
                }}
                开启线程:
                对象.start()        //启动线程,run函数运行
       (2)实现Runnable接口,重写run函数
                开启线程:
                Thread t = new Thread(对象)        //创建线程对象
                t.start()
        (3)实现Callable接口,重写call函数
                Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务。
                Callable和Runnable有几点不同:
                ①Callable规定的方法是call(),而Runnable规定的方法是run().
                ②Callable的任务执行后可返回值,而Runnable的任务是不能返回值的
                ③call()方法可抛出异常,而run()方法是不能抛出异常的。
                ④运行Callable任务可拿到一个Future对象,Future表示异步计算的结果。它提供了检查计算是否完成的方法,以等
                待计算的完成,并检索计算的结果.通过Future对象可了解任务执行情况,可取消任务的执行,还可获取任务执行的结果

       为什么要实现多线程呢?多线程可以把任务分块执行,分块后可以同时进行而不用等待。 这样效率更高
       例如下载文件,通过多线程就可以实现多文件下载
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马