1、创建线程的四种方式

本贴最后更新于 614 天前,其中的信息可能已经时移世易

创建线程的四种方式

本质上都是实现 Runnable 接口

1、继承 Thread 类

public class TestThread extends Thread{
    public static void main(String[] args) {
        TestThread tt = new TestThread();
        tt.start();
    }

    @Override
    public void run() {
        super.run();
        System.out.println("New Thread");
    }
}

缺点:继承 Thread 后,无法继承其它类

2、实现 Runnable 接口


public class TestThread2 implements Runnable{
    public static void main(String[] args) {
        Thread thread = new Thread(new TestThread2());
        thread.start();

        new Thread(new Runnable(){
            @Override
            public void run() {
                System.out.println("匿名内部类");
            }
        }).start();

        //函数式接口->一个接口中只有一个方法,可以转换为lambda表达式(java8新特性)
        new Thread(()-> System.out.println("lambda表达式")).start();

    }
    @Override
    public void run() {
        System.out.println("new thread");
    }
}

接口可以多继承

3、实现 Callable 接口


public class TestThread3 implements Callable<String> {

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        FutureTask<String> ft = new FutureTask<>(new TestThread3());
        Thread thread = new Thread(ft);
        thread.start();
        //阻塞式的获取线程执行结果
        System.out.println(ft.get());
    }

    public String call(){
        return "你好";
    }
}

4、线程池


public class TestThread4 implements Runnable{

    public static void main(String[] args) {
        ExecutorService executorService = Executors.newFixedThreadPool(10);
        executorService.execute(new TestThread4());
    }

    @Override
    public void run() {
        System.out.println("你好 世界");
    }
}

不建议使用 Executors 创建线程池

底层是无界阻塞队列有可能造成 OOM 之外,我们使用 Executors 来创建线程池也不能自定义线程的名字,不利于排查问题,所以建议直接使用 ThreadPoolExecutor 来定义线程池,这样可以灵活控制。****

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3186 引用 • 8212 回帖 • 1 关注
  • 并发
    75 引用 • 73 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...