1.多线程的生命周期是什么?
新建,就绪,运行,阻塞,死亡。
2.线程控制的关键字是什么?每个有什么特点?分别都是怎样运用的?
分享链接:https://www.cnblogs.com/gxyandwmm/p/9379010.html
synchronized:静态方法上的锁(锁住当前类对象),实例方法上(锁住类的实例),代码块上(锁住类的实例)
interrupt()方法:给受阻塞的线程抛出一个中断信号,这样受阻线程就得以退出阻塞的状态。
sleep:Thread类的方法,不释放锁,不需要手动唤醒,可以在任何场景下使用
wait::Object类的方法,释放锁,需要手动唤醒,只能用在同步方法或同步代码块中。
join:用在.start方法之后,是过来抢夺CPU执行权的,等他执行完了后面的才能执行。
nofify:只唤醒一个等待的线程,并使该线程执行。
notifyAll:唤醒所有。
yaild:使当前线程从运行状态变为就绪状态。
3.多线程创建的几种方式是什么?
4.同步和异步的区别是什么?
5.多线程的几个案例:购买火车票,生产者消费者,多线程实现交替打印?
6.线程池是什么?为什么要用线程池?
减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。
7.线程创建的几种方式是什么?
8.线程池的几个重要参数是什么?
7个参数:核心线程数,最大线程数,线程空闲时间,空闲时间单位,队列,线程工厂,拒绝策略。
四个拒绝策略:丢弃任务抛出异常,丢弃任务不抛异常,丢弃队列最前面的任务然后重新提交被拒绝的任务,由调用线程处理该任务。
9.每种线程池都是怎样运用的?
10.什么是死锁?为什么会产生死锁?产生死锁怎样解决?
11.sleep方法和wait方法的区别?
12.join方法的意义?
13,并发和并行的概念区别?
14。什么是进程,什么是线程,什么是多线程?
15.多线程的锁都有哪几种?
16.线程池参数如何设置?
CPU密集型(指系统的硬盘,内存性能相对CPU要好很多,此时,系统运作大部分的状态是CPU Loading 100%)
IO密集型(指系统的硬盘,内存性能相对CPU要差很多)
CPU密集型:核心线程数=CPU核数+1;
IO密集型:核心线程数=CPU*2
具体如何设置参数,还要根据业务场景来分析。
分享一个链接,线程的生命周期,这个链接解决了以上1的问题:https://www.php.cn/faq/416803.html
分享一个链接,线程控制的关键字,这个链接解决了以上2的问题:https://www.php.cn/faq/416803.html
分享一个链接,sleep和wait方法的区别,这个链接决绝了以上11的问题:https://blog.csdn.net/weixin_42941486/article/details/95401118
分享一个链接,多线程创建的几种方式,第三种暂时还不会,稍后学习一下:https://blog.csdn.net/zhangfan1913775361/article/details/96430742
补充分享一下,侧重于第三种的创建方式说明:https://blog.csdn.net/longshengguoji/article/details/41126119
分享一个链接,解释一下同步和异步的区别:https://blog.csdn.net/u014419806/article/details/52776932
分享一个链接,解释并发和并行的概念同时也解释同步和异步的概念,解决了以上4和13的问题:https://blog.csdn.net/woliuyunyicai/article/details/45165869?utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromMachineLearnPai2~default-1.control&dist_request_id=1331988.542.16187298514673151&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromMachineLearnPai2~default-1.control
分享一个链接,购买火车票的案例,这个案例解释了购买火车票时不加锁会出现的问题和加锁的解决方案:https://www.jb51.net/article/117116.htm
分享一个链接,两个多线程实现交替打印:https://blog.csdn.net/wangpengzhi19891223/article/details/88538611
分享一个链接,关于线程池的,这个链接主要侧重于线程池的类图关系及为什么使用线程池和线程池的具体使用:https://www.cnblogs.com/dolphin0520/p/3932921.html
再分享一个链接,也是关于线程池的,这个链接只要侧重于记录线程池的几个重要参数的意义和线程池的分类,及具体使用中线程几个参数的具体实际变化的意义和拒绝策略:https://dalin.blog.csdn.net/article/details/109634840
分享一个链接,关于voliate关键字的详细解释,很全面:https://www.techug.com/post/java-volatile-keyword.html
分享一个链接,Synchronized与Lock的区别与应用场景:https://blog.csdn.net/fly910905/article/details/79765381