
多线程
你认识小汐吗
这个作者很懒,什么都没留下…
展开
-
Callable多线程优化遍历查询
刚接手一个项目,收到很多用户反馈某列表搜索太慢,每次点击【查询】需要3s多,看了下代码逻辑,大概是该项目只有主键id数据,但是列表需要展示id对应的所有全部数据,所以需要先查询出id列表,然后根据id列表遍历调用dubbo接口来获取数据进行整合,返回给前端;一个id调用dubbo接口的耗时大概150ms,最优情况下搜索只有1条数据,那么接口耗时150ms,但是如果是模糊搜索20条数据,则遍历查询耗时就需要3s多,而且查看链路统计,超过50%的请求都是模糊搜索,所以大部分用户搜索列表都是好使3...原创 2022-03-07 21:58:29 · 1135 阅读 · 2 评论 -
三个线程顺序打印ABC,各打印10次
也是面试被问到的题,通过ReentrantLock实现了下,自己测试了下没有问题,crud几年,对多线程了解太少,有不足的地方请大神们指正,有更好的方法也请大神们指导!实现思路创建3个线程,并且给3个线程编号,通过对3取模来判断是否轮到当前线程打印,且通过线程编号来判断应该打印哪个字母代码实现/** * 三个线程顺序打印ABC,各打印10次 * * @author xxx * @date 2021/4/25 */public class Synchronized...原创 2021-04-25 16:17:15 · 1776 阅读 · 1 评论 -
三个线程顺序打印递增数组12345...直到100
面试被问到的题,回来看了下synchronized,wait(),notifyAll(),自己写了下代码,不知道是不是有问题,多次测试是可以试下,先做下记录,之后完善下,多些几种实现方式。用到的技术synchronized这里就不多做介绍了,相信只要经历过面试这个这个肯定是熟悉的不能再熟悉了。wait()函数简单地说,当我们调用wait()方法时,会强制当前线程等待,直到某个其他线程在同一个对象上调用notify()或notifyAll();notifyAll()函数该方法只是唤原创 2021-04-25 15:48:04 · 857 阅读 · 0 评论 -
SpringBoot内置Tomcat支持多大并发量和连接数
SpringBoot内置Tomcat,再默认设置中,Tomcat的最大线程数是200,最大连接数是10000。支持的并发量是指连接数,200个线程如何处理10000条连接的? Tomcat有两种处理连接的模式,一种是BIO,一个线程只处理一个连接,另一种就是NIO,一个线程处理多个连接。由于HTTP请求不会太耗时,而且多个连接一般不会同时来消息,所以一个线程处理多个连接没有太大问题。...原创 2020-08-13 15:37:06 · 7126 阅读 · 0 评论 -
多线程解决for循环效率问题
在for里面,如果执行一次for里面的内容所需时间比较长,可以使用线程池来提高for循环的效率;public class TreadFor { private static final int loopNum = 1*10; public static void main(String args[]) throws InterruptedException { ...原创 2018-03-16 11:28:19 · 51504 阅读 · 6 评论 -
线程池之newCachedThreadPool可缓存线程池
java线程池:Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。...原创 2018-03-16 11:53:20 · 31604 阅读 · 4 评论 -
线程池之newFixedThreadPool定长线程池
newFixedThreadPool创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newFixedThreadPool固定线程池, 使用完毕必须手动关闭线程池, 否则会一直在内存中存在。示例代码:public class ThreadPoolFixed { public static void main(String[] args) { //设置线程池大小为3 E...原创 2018-03-16 12:23:59 · 13342 阅读 · 0 评论 -
线程池中shutdown()和shutdownNow()方法的区别
shutDown() 当线程池调用该方法时,线程池的状态则立刻变成SHUTDOWN状态。此时,则不能再往线程池中添加任何任务,否则将会抛出RejectedExecutionException异常。但是,此时线程池不会立刻退出,直到添加到线程池中的任务都已经处理完成,才会退出。shutdownNow() 根据JDK文档描述,大致意思是:执行该方法,线程池的状态立刻变成STOP状态,并试...原创 2018-03-16 12:41:11 · 4266 阅读 · 0 评论