创建线程的4种方式

创建线程的4种方式

继承Thread(Thread本身实现Runnable接口)

使用方式:
1.继承Thread 2.重写run() 3.子类对象调用start方法

 public void run() {
        for (int i = 0; i < 100; i++) {
            System.out.println(Thread.currentThread().getName() + "在操作");
        }
    }
public static void main(String[] args) {
        Test01 a=new Test01();
        a.start();
        for (int i = 0; i < 2000; i++) {
            System.out.println("main函数----"+i);
        }
    }

测试方法 主线程和run的线程在交替打印
在这里插入图片描述
实例测试 开启三个线程去下载图片 并发下载图片
在这里插入图片描述

在这里插入图片描述

实现Runnable接口
方式1:
Runnable runnable=new Runnable{public void run(){}};
Thread  t=new Thread(runnable,"线程名");
方式2:
类实现Runnalbe
Thread t=new Thread(实现类对象,"线程名"); 
方式3:
Thread  t=new Thread(()->{sout("这是一个run方法实体内容");},"线程名");
lambda表达式:只有一个抽象方法 叫 函数式接口

常用方式:implements接口 实现run方法
新建线程对象(实现类对象).start()

  public void run() {
        for (int i = 0; i < 100; i++) {
            System.out.println(Thread.currentThread().getName() + "在操作");
        }
    }
    public static void main(String[] args) {
        Test01 a=new Test01();
        Thread thread=new Thread(a);
        thread.start();
        for (int i = 0; i < 2000; i++) {
            System.out.println("main函数----"+i);
        }

    }

Thread和Runnable区别

在这里插入图片描述

  • 虽然二者都是实现runnable接口
    exthends Thread 是继承:任务(run)和线程在一起
    implements Runnable是实现:将任务和线程分开 使用静态代理 我们修改任务 而不是线程
  • 另外推荐优先使用组合 而不是继承
Runnable采用静态代理

真实对象 本类 implemnts Runnable
在这里插入图片描述
代理 Thread类 implements RunnableHappyMarry(){before() this.taeget() after()}
在这里插入图片描述
主函数中 把真正的对象传到代理对象构造函数当中
使用代理对象执行接口中的方法
代理对象实现的接口方法中增加了真实对象实现方法的功能
在这里插入图片描述
在这里插入图片描述
Thread类和当前类都实现Runnable接口 Thread是代理对象 当前类是真实角色
在这里插入图片描述

实现callable接口 重写Call方法

比Runnale接口

  1. 任务结束会有返回结果
  2. call()方法可以抛出异常
  3. 可以获得一个FutureTask类型对象 里面装着线程的返回结果
    其他线程调用Future的get()方法获取结果的时候,调用get()的线程就会阻塞 直到call()方法结束 future里面有结果了

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值