有关多线程的一些知识点的总结

最近 因为时间比较充足 看了张孝祥将的java多线程实战,看了以后想结合本身的理解对java的多线程这个知识进行一个总结,鉴于面试中常常会问多线程相关的知识,而咱们不少人因为本身工做年限和工做中接触到的多线程的知识其实并非不少,因此在面试的时候会比较为难,但愿我对这个的总结能够对你们掌握多线程有一些理解,固然了我本身的学习后的总结并 不必定都是对的,仍是但愿你们能够一块学习。好了这是我写这个随笔的一个愿望吧算是,本身学会了也但愿通道中人也能够学会,let go。。。。html

我对多线程的学习总结按照下面的一个逻辑和路线来讲明:java

1 实现多线程的两种方法以及区别面试

2 java中定时器的实现及原理spring

3 传统的实现线程互斥的一些技术及不一样之处安全

4 线程的同步以及线程范围内共享变量的实现方式多线程

5 ThreadLocal这个强大东东的侃大山,以及咱们在平时的开发中 在哪里其实在不知不觉中已经在使用这个东东了呢。。框架

6 java中一些不常用的线程安全也就是原子性操做的类的说明eclipse

7 java5 提供的线程库 java.util.concurrent包的应用介绍。主要是Executors类的使用。这个东西你们都知道可是里面不少东西应该都没有接触过。工具

8 java5 中的Callable与Future的应用  实现线程处理结果的学习

9 线程中的锁以及读写锁的应用,以及锁与sychronized在实现线程互斥方面的区别

10 java中的condition条件的用途

11 Semaphere信号灯。以及一些同步工具类的使用

12最后说一下有关阻塞队列 以及消息队列。

13 作一个总结。

今天就先说一个实现线程的两种方法,我想不少求职找工做的只要问到有关线程的这个问题应该是必问的,哈哈 我就被问到过好几回。但是对这个问题除了能够说出集成Thread类和实现runnable接口两种方式以外你还能说出一些其余的吗,若是不能的话那么能够判定你的此次面试有关线程这块应该是失败的。说到这里咱们换是先去看看源码去吧:java.lang.Thread: 的构造方法init(null, null, "Thread-" + nextThreadNum(), 0L);咱们看init的具体实现:

 

红色的字是对这个初始化方法的一个解释。

这里面有关secyrityManager java 安全管理器的详细知识能够去这里了解---http://blog.sina.com.cn/s/blog_48a45b950100f2lc.html

这时候我想你可能会问个人,你这不就是对threan的初始化过程作了一个介绍吗,还有别的吗,别着急立刻来,这时候咱们知道启动一个线程的方法是start(),哪咱们就看看Thread类中的start()方法的源码:

看这里的start方法,不论是咱们本身集成的线程子类重写的run方法也好,咱们看启动的start方法是不变的,看start()方法的实现是先去判断一下当前线程的状态是否正确,若是正确就将这个线程添加到线程组中。这里咱们换看到了一个start0()的方法,并且是一个native修饰的方法,

这时候咱们再看run方法的实现,里面有一个target 从上面的定义中咱们能够看到target其实就是一个runnable接口,这个时候我觉着你应该明白了呗,其实不论是集成thread仍是实现runnable,其实底层都是同样的,但这时候可能会问哪为何要这样的方式来实现呢,我也查了一些资料,我觉着这样说是颇有道理的:

① 一个类只能继承一个父类,存在局限;一个类能够实现多个接口

② 在实现Runable接口的时候调用Thread的Thread(Runnable run)或者Thread(Runnable run ,String name)构造方法建立进程时,使用同一个Runnable实例,如上程序中使用的都是rt,则创建的多线程的实例变量也是共享的;

可是经过继承Thread类是不能用一个实例创建多个线程;

故而实现Runnable接口适合于资源共享;

固然,继承Thread类也可以共享变量,能共享Thread类的static变量;

③ Runnable接口和Thread之间的联系:

public class Thread extends Object implements Runnable  能够看出Thread类也是Runnable接口的子类;

好了我想对这两张实现线程的方式的代码就没必要写了,你们应该都会。若是不会的话先打开eclipse本身写一个再说。

 

2 java中有关定时器的实现:

 在咱们接触到的定时器中主要由spring框架提供的quartor和java原生自带的Timer类。好了这个咱们留在明天再说吧。对写的上述有不一样意见的欢迎你们多多评论共同探讨。。

相关文章
相关标签/搜索