写在多线程学习之前

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

未完待补充。。。

 

以上是关于写在多线程学习之前的主要内容,如果未能解决你的问题,请参考以下文章

在多线程中使用链表队列

python 归纳 (十三)_队列Queue在多线程中使用

从零开始学习Java多线程

多线程(基础篇1)

多线程(基础篇1)转载

对Java CAS的一些了解(正在整理学习中)