写在多线程学习之前
Posted cblpolly
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了写在多线程学习之前相关的知识,希望对你有一定的参考价值。
打算在每个专题的学习之前,写一篇随笔,记录下自己对该专题认知的1.0版,以后持续迭代。我学习多线程有以下两个原因:
一、多线程是高级开发人员必备的技能,我对多线程可以说仍是一知半解,停留在零散理论阶段,未达到系统理论阶段,更未达到实战阶段。工作中接触到线程有三次,现在总结才发现都和定时任务有关,看来定时任务是多线程使用率比较高的一个场景。
1、在第一家公司,写了一个简单的单线程用于同步数据。
2、在第二家公司,用到公司封装好的定时任务框架,当时觉得到封装底层肯定是用到了线程,现在想想还用到了线程池。
3、最近到了新单位又是一个定时任务的需求,定时同步数据给企业微信号,为了支持cron的数据库可配置,支持该定时模块以后的可扩展,选择了一个轻量级的Quartz——Spring Task,其底层实现也是维护了一个线程池。目前这个小小的定时模块已经实现了,但是却勾起了我学习多线程的兴趣,不能一直停留在应用层面,必须深入底层,知其然,并知其所以然。
二、曾经在好几次的面试中被问及了Java线程相关的问题,自己的回答总是不尽如人意,并且每次都会有新的问题出现,以下列举下自己遇到的线程的面试问题,在以后的学习中逐个解开疑团。
1、Java线程的实现方式,大家都知道的有两种继承Thread类或者实现Runable接口,有一次面试被问说还有一种方式,当然是不知道,后来自己查是实现Callable<T>接口,实现Callable<T>接口的线程是有返回值的。本质不是要记住这些方式,而是知道在什么情况用。
2、线程的run方法和start方法,run方法用于实现线程的任务,start方法用于启动线程,run方法和普通的Java方法没有本质区别
https://www.cnblogs.com/sunnybug/p/5568626.html
3、线程的同步,线程安全
4、线程池
https://www.cnblogs.com/zzuli/p/9386463.html
https://www.cnblogs.com/superfj/p/7544971.html
https://www.cnblogs.com/zhujiabin/p/5404771.html
未完待补充。。。
以上是关于写在多线程学习之前的主要内容,如果未能解决你的问题,请参考以下文章