多线程
文章平均质量分 60
MaYuKang
这个作者很懒,什么都没留下…
展开
-
Java中main方法是单线程还是多线程?启动后有多少个线程会被创建?
先说结论:main方法启动后,jvm会开启多个守护线程,但main方法中的代码是被单线程执行的。上代码:下面这段代码通过java提供的线程管理类ThreadMXBean中的dumpAllThreads方法返回所有活动线程的线程信息,并打印线程id和名称:public class Test { public static void main(String[] args) throws InterruptedException { ThreadMXBean threadMXBean原创 2021-12-14 18:21:46 · 4724 阅读 · 3 评论 -
@Scheduled同时执行多个定时任务所导致的并发问题
SpringBoot中通过@Scheduled注解开启定时任务,通过控制执行顺序,单线程和多线程下同时执行多个定时任务所导致的并发问题。原创 2021-12-09 20:00:43 · 12794 阅读 · 8 评论 -
多线程之哲学家就餐问题(java代码含注释)
什么是哲学家就餐问题有五个哲学家在一张桌上,他们交替思考和吃饭。每个人只能拿自己左右手边的叉子,当他们拿到两只叉子的时候才能吃饭,吃完饭就放下叉子开始思考,每个哲学家不能同时拿起两只叉子。用程序实现这个过程。问题分析根据题意,每个哲学家交替吃饭和思考,吃饭的条件是拿到两只叉子,那么如果五个哲学家都同时拿了左手边的叉子,那么永远都不可能有人能吃到饭,只能饿死。为了避免这种情况的发生,我们一次只能允许四个哲学家去拿叉子,让一个人暂时思考,等待别人吃完饭,他再去拿叉子。在java中,我们可以利用信号量S原创 2021-11-10 20:46:06 · 3029 阅读 · 5 评论 -
java多线程面试之手写阻塞队列,实现生产者和消费者模式。
什么是阻塞队列首先,阻塞队列是一个队列,满足队列的基本数据结构,先进先出。其次,当队列满时,队列会阻塞插入元素的线程,直到队列不满;当队列空时,获取元素的线程会等待队列变为非空。阻塞队列常用于生产者和消费者的场景,生产者是向队列里添加元素的线程,消费者是从队列里取元素的线程。如何写一个阻塞队列手写阻塞队列是多线程面试中常见的问题,能考察面试者对多线程和锁的基础知识。通过synchronized关键字配合wait()和notify()方法,实现线程的交替运行:import java.util.Li原创 2021-11-02 21:17:08 · 1450 阅读 · 2 评论