
多线程
文章平均质量分 88
网络深处的易某某
小易不努力
展开
-
线程池详解
根据池化思想,在一个系统中,为了避免线程频繁的创建和销毁,让线程可以复用,引入了线程池的概念。线程池中,总有那么几个活跃线程。当你需要使用线程时,可以从池子中随便拿一个空闲线程,当完成工作时,并不急着关闭线程,而是将这个线程退回到池子,方便其他人使用。简单说就是,在使用线程池后,创建线程变成了从线程池中获得空闲线程,关闭线程编程了向池子里归还线程。原创 2024-08-18 08:14:30 · 983 阅读 · 0 评论 -
异步编程-异步任务
Future 类是异步思想的典型运用,主要用在一些需要执行耗时任务的场景,避免程序一直原地等待耗时任务执行完成,执行效率太低。具体来说是这样的:当我们执行某一耗时的任务时,可以将这个耗时任务交给一个子线程去异步执行,同时我们可以干点其他事情,不用傻傻等待耗时任务执行完成。等我们的事情干完后,我们再通过 Future 类获取到耗时任务的执行结果。这样一来,程序的执行效率就明显提高了。这其实就是多线程中经典的Future 模式。原创 2024-08-06 19:39:56 · 1490 阅读 · 0 评论 -
异步编程-Async
1)在方法上使用该@Async注解,申明该方法是一个异步任务;2)在类上面使用该@Async注解,申明该类中的所有方法都是异步任务;3)方法上一旦标记了这个@Async注解,当其它线程调用这个方法时,就会开启一个新的子线程去异步处理该业务逻辑。4)使用此注解的方法的类对象,必须是spring管理下的bean对象;5)要想使用异步任务,需要在主类上开启异步配置,即配置上@EnableAsync注解;1、线程池本身也会消耗内存资源,所以我们要控制线程池的规模,防止它占用过多资源、进而影响项目运行;原创 2024-08-05 19:33:33 · 703 阅读 · 0 评论 -
并发编程-多线程
这里的执行与其他两种方式的执行不同,实现Callable接口的线程任务,需要使用futureTask来进行初始化,并且使用futureTask来获取线程任务的返回结果。上面这种方式其实是不建议使用的,无法控制线程的数量等,可能会带来较大的影响,推荐使用自定义线程池的方式创建。但是如果实现了Runable接口的话,则很容易的实现资源共享。对比,前两种方式创建线程的方式来说,这种方式的有点在于,它可以获取到线程任务执行后的返回值。关于线程池的详细介绍和操作,可以看《并发编程-线程池》一文。原创 2024-03-18 21:30:56 · 383 阅读 · 0 评论 -
并发编程-线程池
关于线程池,查看源码可以看见,线程池的顶层接口是:Executor,只提供了execute方法,其下的实现非常多,常用的实现是ExecutorService,它提供了操作线程池的很多方法,例如开启线程池,关闭线程池,提交线程任务等等,我们使用的大部分线程池,几乎都是实现了ExecutorService接口。原创 2024-03-11 20:10:24 · 1286 阅读 · 0 评论