为什么要使用线程池(为什么使用线程池,反而比不加之前更慢了呢?)

线程池

这篇文章给大家聊聊关于为什么要使用线程池,以及executorservice不建议使用对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

本文目录

  1. Java如何给scanner(System.in)限制输入时间
  2. 为什么要使用线程池
  3. task schedule和 task executor的区别

Java如何给scanner(System.in)限制输入时间

实现多线程的定时器就好了,然后在界面上刷新输入的倒计时。

java多线程实现方式:

1.继承Thread;

2.实现runnable接口;

3.使用ExecutorService、Callable、Future实现有返回结果的多线程。

为什么要使用线程池

1.减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。

2.可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为消耗过多的内存,而把服务器累趴下(每个线程需要大约1MB内存,线程开的越多,消耗的内存也就越大,最后死机)。

Java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是ExecutorService。

task schedule和 task executor的区别

TaskSchedule和TaskExecutor是两种不同的任务执行方式,它们在任务调度和执行管理方面有所区别。

1.TaskSchedule(任务调度器):它主要用于安排和控制任务的执行时间。任务调度器负责根据预定的规则或条件来触发任务的执行。常见的例子包括定时任务(如每天凌晨执行)、周期性任务(如每隔一段时间执行)等。任务调度器可以确保在指定时间点或间隔内启动相应的任务,并提供灵活的配置选项来满足不同需求。Java中常用的框架有Quartz、SpringScheduling等。

2.TaskExecutor(任务执行器):它主要负责实际执行被调度的任务。与简单地按计划触发并运行不同,一个任务可能需要异步处理、多线程处理或并行处理等特性,这就需要使用到一个合适的TaskExecutor来管理和分配线程资源以及协调并发操作。TaskExecutor通常会维护一个线程池,根据具体情况从线程池中选择合适数量的线程去处理待执行的任务,并且可以根据需要对线程池进行扩展或缩减。Java中常用的框架有ThreadPoolExecutor、ForkJoinPool等。

总结起来,TaskSchedule主要关注定义和安排何时运行某个特定任务,而TaskExecutor主要关注如何以高效和灵活的方式执行这些任务。它们在任务调度和执行管理方面各自发挥着不同的作用。

END,本文到此结束,如果可以帮助到大家,还望关注本站哦!

如何优雅的使用线程池

本文内容来自互联网,若需转载请注明:https://bk.66688891.com/12/121153.html