Java开发入门到精通--Java的多线程和线程池的使用
小职 2021-09-29 来源 :Mac编程之道 阅读 33 评论 0

摘要:本篇主要介绍了Java开发入门到精通--Java的多线程和线程池的使用,通过具体的内容展现,希望对Java开发的学习有一定的帮助。

本篇主要介绍了Java开发入门到精通--Java的多线程和线程池的使用,通过具体的内容展现,希望对Java开发的学习有一定的帮助。

Java开发入门到精通--Java的多线程和线程池的使用


继承Thread

继承Thread去执行任务,确实可以开启一个线程去执行任务,如果经常的去开启一些线程,也会导致系统资源的浪费。

 

public static class Mythread extends Thread{

        @Override

        public void run() {

            System.out.println("当前线程"+Thread.currentThread().getId());

            int i = 10/2;

            System.out.println("运行结果"+i);

        }

    }

//调用线程。

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

        /**thread执行方式*/

        Mythread mythread = new Mythread();

        mythread.start();//启动线程

        System.out.println("main--end");

}

实现Runnale接口。

public static class MyRunable implements Runnable {

 

    @Override

    public void run() {

        System.out.println("当前线程"+Thread.currentThread().getId());

        int i = 10/2;

        System.out.println("运行结果"+i);

 

    }

}

调用。

 

/**

 * runable的启动方式

 */

 

MyRunable runable = new MyRunable();

new Thread(runable).start();

System.out.println("main--end");

Callable

/**

 * Callable可以允许有返回值

 */

 

public static class Callale01 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;

    }

}

调用。这里需要用callable构建futureTask

 

/**

 * callale的启动方式

 */

FutureTask<Integer> futureTask =new FutureTask<>(new Callale01());

//取返回结果。

Integer i = futureTask.get();

new Thread(futureTask).start();

System.out.println("返回结果是:"+i);

线程池

线程池才是我们java开发中,经常用到一种开启多线程的方式,线程池,自己去管理线程。可以节省系统资源。通常我们会将下面的一些配置写在一些配置类中

 

/**

 * 七大参数

 * corePoolSize: 1.核心线程数[一直存在]: 线程池创建好了以后。就准备就绪的线程数量。

 * maxinumPoolSize: 2 最大线程数量

 * keepaliveTime: 存活时间。空闲线程的最大的等待时间。

 * unit  等待时间的单位

 * blockingQueue 阻塞队列。如果任务很多就会放在队列里面,只要有线程空闲了,就会去队列里面去取。

 * threadFactory :线程的工厂。

 * RejectExecutionHandler :如果队列满了。按照我们指定的策略。拒绝执行任务。

 *

 */

 ThreadPoolExecutor executor = new ThreadPoolExecutor(5,100,10,TimeUnit.SECONDS,

          new LinkedBlockingQueue<>(100),

                                                    Executors.defaultThreadFactory(),new ThreadPoolExecutor.AbortPolicy());

常见的4种线程池。

1 newCachedThreadPool()

 

创建一个可缓存的线程池,如果线程池长度超过了处理的需要,可灵活的回收空闲线程。若无可回收。则创建新线程。

 

Executors.newCachedThreadPool();

2.newFixedThreadPool(6)

 

创建一个固定大小的线程池。

 

3 newScheduledThreadPool()

 

定时任务的线程池。

 

4.newSingleThreadExecutor()

 

Executors.newSingleThreadExecutor(); 


我是小职,记得找我

✅ 解锁高薪工作

✅ 免费获取基础课程·答疑解惑·职业测评

Java开发入门到精通--Java的多线程和线程池的使用

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    ICP许可  沪B2-20190160

站长统计