day121-异步-初始化线程的四种方式

本文通过示例代码介绍了Java中实现多线程的四种方式:继承Thread类、实现Runnable接口、使用Callable接口结合FutureTask以及利用线程池ExecutorService。重点讨论了线程池的使用,并指出在实际项目中通常使用线程池初始化线程的原因。

不多说,直接上代码 把代码复制过去运行下就知道了

package com.atguigu.gulimall.search.thread;

import java.util.concurrent.*;

/**
 * @author rengang
 * @version 1.0
 * @date 2021/4/7 22:11
 */
public class ThreadTest {

    //一般在项目启动时创建线程池根据需求创建一到几个 保证最大线程数量运行时不会宕机.并且可以 
    //通过压测等手段来测试多大线程数能达到系统的峰值 这里使用其中一种方式创建线程池作为例子
    public static ExecutorService executorService = Executors.newFixedThreadPool(10);

    public static void main(String[] args) throws ExecutionException, InterruptedException {

        Thread.sleep(1000);
        System.out.println("----1----");
        //初始化线程的四种方式
        //1.继承Thread类
        new Thread1().run();

        Thread.sleep(1000);
        System.out.println("----2----");
        //2.实现Runnable接口
        new Thread(new Runnable1()).start();

        Thread.sleep(1000);
        System.out.println("----3----");
        //3.实现Callable接口加FutureTask(可以拿到返回结果,可以处理异常)
        FutureTask<Integer> futureTask = new FutureTask<>(new Callable1());
        futureTask.run();
        //get()方法获取返回结果时阻塞式等待
        System.out.println("futuretask返回结果:"+futureTask.get());

        Thread.sleep(1000);
        System.out.println("----4----");
        //4.使用线程池
        //后面基本项目的业务代码中都是使用线程池来进行线程的初始化,为什么呢?后面一节讲
        executorService.execute(new Runnable1());
    }


    public static class Thread1 extends Thread{

        @Override
        public void run() {
            int n = 10/4;
            System.out.println("Thread-"+Thread.currentThread()+"的run方法中输出:"+n);
        }
    }

    public static class Runnable1 implements  Runnable{

        @Override
        public void run() {
            int n = 10/4;
            System.out.println("Runnable-"+Thread.currentThread()+"的run方法中输出:"+n);
        }
    }

    public static class Callable1 implements Callable<Integer>{

        @Override
        public Integer call() throws Exception {
            int n = 10/4;
            System.out.println("Callable-"+Thread.currentThread()+"的call方法中输出:"+n);
            return n;
        }
    }

}

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我才是真的封不觉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值