四种方式下创建线程启动的区别

  • 继承Thread类,重写run方法
  • 实现Runnable接口,重写run方法
  • 实现Callable接口,配合FutureTask来实现返回值,重写call方法
  • 创建一个线程池,通过线程池调度
    我们来看下代码:
import java.util.concurrent.*;
public class ThreadTest {

    public static ExecutorService executor = Executors.newFixedThreadPool(10);

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        // System.out.println("main......start.....");

        // 1、通过继承Thread类
        // Thread thread = new Thread01();
        // thread.start();
        // System.out.println("main......end.....");

		// 2、通过实现Runnable接口
        // Runable01 runable01 = new Runable01();
        // new Thread(runable01).start();
		
		// 3、通过FutureTask传参Callable,实现有返回值
        // FutureTask<Integer> futureTask = new FutureTask<>(new Callable01());
        // new Thread(futureTask).start();
        // System.out.println(futureTask.get());

        // service.execute(new Runable01());

        System.out.println("main......start.....");
    }  


    public static class Thread01 extends Thread {
        @Override
        public void run() {
            System.out.println("当前线程:" + Thread.currentThread().getId());
            int i = 10 / 2;
            System.out.println("运行结果:" + i);
        }
    }


    public static class Runable01 implements Runnable {
        @Override
        public void run() {
            System.out.println("当前线程:" + Thread.currentThread().getId());
            int i = 10 / 2;
            System.out.println("运行结果:" + i);
        }
    }


    public static class Callable01 implements Callable<Integer> {
        @Override
        public Integer call() throws Exception {
            System.out.println("当前线程:" + Thread.currentThread().getId());
            int i = 10 / 2;
            System.out.println("运行结果:" + i);
            return i;
        }
    }
}

第一种和第二种都是无返回值的创建线程执行任务,第三种是有返回值的创建线程执行任务。
以上这三种创建线程的方式在业务中是不能出现的,因为它们的创建线程和销毁线程是非常消耗时间的,影响业务的响应时间,抛开这些不讲,它也非常的消耗资源,假设我现在有10万的并发请求打过来,如果我用以上三种的其中一种创建线程执行任务的话,理想状态下是需要创建10万个线程,这是不可能的,在期间肯定会造成内存爆了,服务器宕机的。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值