
多线程
不学到秃头不改名
大三 很菜
展开
-
线程池关闭不合理,导致应用无法正常stop的情况
在上一篇博客中,我使用了线程池进行管理线程,达到线程复用的效果。详情参考:线程池+CountDownLatch优化代码,提高程序执行效率程序启动、运行皆无异常,线程池确实对程序中创建的线程进行管理,但是,在我关闭tomcat时,无法正常关闭,程序出现报错。报错信息如下:05-Apr-2020 19:09:45.003 璀﹀憡 [localhost-startStop-2] or...原创 2020-04-05 20:23:56 · 1071 阅读 · 0 评论 -
线程池+CountDownLatch优化代码,提高程序执行效率
在前几篇博客中,我使用Redis来缓存热点数据,提高首页的访问速度 (参考SSM整合Redis)发现,相比于每次从数据库中查询数据,程序执行速度提高了很多。今天,我决定对这个需求继续优化。采用多线程的方式来实现。先来看一下优化之前的代码:long startTime = System.currentTimeMillis();model.addAttribute("types",...原创 2020-04-05 17:54:34 · 1844 阅读 · 0 评论 -
深入理解ConcurrentModificationException并发修改异常
深入理解ConcurrentModificationException并发修改异常我是一个双非二本院校软件工厂专业的学生,自学Java6个月接下来一段时间,我将以复习的形式,总结所学知识,同时进行输出,形成自己的知识体系。鸡汤:那么多学技术的都可以成功,凭什么你不行?我们先来看两个案例:/** * @ClassName: ConcurrentModif...原创 2020-03-27 23:46:22 · 331 阅读 · 0 评论 -
大厂面试题:两个线程交叉打印,一个打印数字,一个打印小写字母,结果为 1A2B3C4D5E6F
前言:这道题主要考察的就是,多线程之间的通信、唤醒、切换问题。B站上看到马士兵老师的视频:这道大厂面试题区分平庸与卓越部分解法整理如下:LockSupport实现方式/** * @ClassName: LockSupport * @description: 两个线程交叉打印,一个打印数字,一个打印小写字母,结果为 1A2B3C4D5E6F * LockSupport实现 ...原创 2020-03-15 20:53:38 · 850 阅读 · 5 评论 -
Java中线程的六种状态
Java中线程的六种状态1. 初始(NEW):新创建了一个线程对象,但还没有调用start()方法。2. 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使用权,此时处于就...原创 2020-03-04 20:12:04 · 210 阅读 · 0 评论