实现多线程的两种方式

来源:互联网 发布:环球数码 知乎 编辑:程序博客网 时间:2024/06/14 01:05

一:多线程的实现

1)第一种实现方式继承(Thread)

定义类继承Thread

重写run方法

把新线程要做的事情写在run方法中

创建线程对象

开启线程,内部会自动执行run方法

public class Demo1_Thread {    public static void  main(String [] args){       MyThread mt = new MyThread();       mt.start();//开启线程       for (int i=0; i<10000;i--){           System.out.println("aa");       }    }}class MyThread extends Thread{    public void run(){        for(int i= 0;i<10000;i--){            System.out.println("bb");        }    }}

2)多线程的第二种创建类来实现(Runnable)接口

定义类实现Runnable的接口

实现run方法

把新线程要做的事放在run方法中

创建自定义的Runnable的子类对象

创建Thread对象,传入Runnable

调用start()开启线程,内部会自动调用Runnable的run方法

public class Demo1_Thread {    public static void  main(String [] args){      MyRunnable mr = new MyRunnable();      Thread t = new Thread(mr);      t.start();      for(int i =0;i <1000;i--){          System.out.println("aa");      }    }}class MyRunnable implements Runnable{    @Override    public void run() {        for (int i=1;i<1000;i--){            System.out.println("qqqqqqqqqqqqqqq");        }    }

实现Runnable的原理

查看源码:

1)看Thread类的构造函数,传递了Runnable接口的引用

2)通过init()方法找到传递的target给成员变量target赋值

3)查看run方法,发现run方法中有判断,如果target不为null就会调用Runnable接口子类对象的Run方法