美文网首页
三种线程的创建方式

三种线程的创建方式

作者: 邱风扫落叶 | 来源:发表于2019-12-03 21:07 被阅读0次

talk is cheap ,show me your code
通过Thread的方式进行创建

public class CatThread extends Thread {
    @Override
    public void run() {
        System.out.println("喵");
    }
}

通过Runable的方式进行创建

public class DogThread implements Runnable{
    @Override
    public void run() {
        System.out.println("汪");
    }
}

通过Callable的方式进行创建

import java.util.concurrent.Callable;

public class WolfThread implements Callable<String> {
    @Override
    public String call() throws Exception {
        return "嗷";
    }
}

Main方法

import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class Main {

    public static void main(String[] args) throws ExecutionException, InterruptedException {
    // write your code here
        //runnable只是一个接口,要想运行run方法需要先赋值给Thread
        DogThread dog = new DogThread();
        Thread dogThread = new Thread(dog);
        //直接创建
        CatThread catThread = new CatThread();
        //callable接口可以返回值,但是需要先给futureTask然后再给Thread,通过FutureTask的get方法可以获取返回值
        WolfThread wolf = new WolfThread();
        FutureTask<String> ft = new FutureTask<>(wolf);
        Thread wolfThread = new Thread(ft);

        dogThread.start();
        catThread.start();
        wolfThread.start();
        System.out.println(ft.get());

    }
}

直接运行的结果:


image.png

总结一下的话就是thread编写方便,但是因为是继承的关系扩展麻烦,而Runable是接口扩展方便,就是编写麻烦点,而callable的话有返回值。其实一般来说使用哪一种方式都是看需求而已,但是一般来说我比较习惯使用Runable

这里顺便探讨一下,为什么实现Runable需要把Runable放入Thread的构造函数


image.png

这个是Thread类的源码,可以看到主要实现是init方法,在init方法中,通过参数把runable传入给Thread


image.png
这里顺便看一下target还有哪里被调用
image.png
image.png

可以看到,使用run方法的时候判断runable是否为空,不为空的话就运行runable的run方法

相关文章

  • iOS基础知识 (三)

    多线程 多线程创建方式 iOS创建多线程方式主要有NSThread、NSOperation、GCD,这三种方式创建...

  • 多线程编程

    创建线程 创建线程的三种方式 创建方式Threadclass继承Thread类(重点)Runnable接口实现Ru...

  • 1 Java线程知识

    Java三种创建线程的方式:

  • 多线程 学习1

    一、创建线程方式 java创建线程的方式,主要有三种:类Thread、接口Runnable、接口Callable。...

  • Java多线程基础一

    多线程创建的三种方式 lambda

  • 线程池的使用入门

    在上一篇文章中,我们总结了三种创建线程的方式:《Java多线程基础——三种创建线程的方式》,然而在真实的开发中很少...

  • Java创建线程的三种方式及对比

    一.Java创建线程的三种方式 Java中创建线程主要有三种方式:1.继承Thread类2.实现Runnable接...

  • iOS 线程

    pthread NSThread 第一种创建方式 第二种创建方式 第三种创建线程的方式 NSThread线程的状态...

  • 线程

    java 中创建线程有哪几种方式? Java中创建线程主要有三种方式: 一、继承Thread类创建线程类 (1)定...

  • 创建线程的三种方式

    java创建线程的三种方式: 继承Thread类创建线程类通过Runable接口创建线程类通过Callable和F...

网友评论

      本文标题:三种线程的创建方式

      本文链接:https://www.haomeiwen.com/subject/rephgctx.html