JAVA 多线程初探

作者: 标量操纵Leve5 | 来源:发表于2018-01-10 03:01 被阅读2次



undefined_腾讯视频

1.背景介绍

线程

进程中负责程序执行的执行单元 线程本身依靠程序进行运行

进程

执行中的程序一个进程至少包含一个线程

2.知识剖析

多线程有什么用?

发挥多核CPU的优势

防止阻塞

线程的实现

继承Thread类

实现Runnable接口

使用ExecutorService、Callable、Future实现有返回结果的多线程

3.常见问题

线程的状态

1、新建状态(New):新创建了一个线程对象。

2、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。

3、运行状态(Running):就绪状态的线程获取了CPU,执行程序代码。

4、阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。阻塞的情况分三种:

(一)、等待阻塞:运行的线程执行wait()方法,JVM会把该线程放入等待池中。(wait会释放持有的锁)

(二)、同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池中。

(三)、其他阻塞:运行的线程执行sleep()或join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。(注意,sleep是不会释放持有的锁)

5、死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期。

4.配置展示

5.扩展思考

上下文切换

对于线程的上下文切换实际上就是 存储和恢复CPU状态的过程,它使得线程执行能够从中断点恢复执行。

上下文的切换开销也很重要,如果你创建了太多的线程,CPU 花费在上下文的切换的时间将多于执行程序的时间!

6.参考文献

http://www.runoob.com/java/java-multithreading.html

https://www.cnblogs.com/lwbqqyumidi/p/3804883.html

https://zhuanlan.zhihu.com/p/26441926

http://www.importnew.com/21136.html

7.更多讨论

如果调用run方法,即相当于在主线程中执行run方法,跟普通的方法调用没有任何区别,此时并不会创建一个新的线程来执行定义的任务。

通过调用start()方法,就会创建一个新的线程了

在下载的过程中可能会用到多线程。

PPT:PPT

技能树.IT修真院

“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~

直接点击此链接:http://www.jnshu.com/login/1/10985551

相关文章

  • 【Java】多线程初探

    Java的线程状态 从操作系统的角度看,线程有5种状态:创建, 就绪, 运行, 阻塞, 终止(结束)。如下图所示 ...

  • JAVA 多线程初探

    1.背景介绍 线程 进程中负责程序执行的执行单元 线程本身依靠程序进行运行 进程 执行中的程序一个进程至少包含一个...

  • Java多线程初探

    本文列举了Java多线程相关的一些重要概念,作为后续系列文章索引。 Linux锁机制对比 spinlock: 自旋...

  • Java线程池初探

    Java线程池初探 1. 为什么要用线程池? 多核CPU时代,为更好利用资源以获取更高的性能,多线程编程早已普通应...

  • 带你搞懂Java多线程(五)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四) ...

  • 带你搞懂Java多线程(六)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四)带...

  • Java多线程目录

    Java多线程目录 Java多线程1 线程基础Java多线程2 多个线程之间共享数据Java多线程3 原子性操作类...

  • java多线程--Callable

    **移步[java多线程系列文章]Java多线程(二十二)---LockSupport工具Java 停止线程 一、...

  • android 多线程 — 线程的面试题和答案

    这里都是我从各个地方找来的资料,鸣谢: Java多线程干货系列—(一)Java多线程基础 JAVA多线程和并发基础...

  • 5月份第一周学习安排

    学习内容: java多线程及线程同步的方法(使用) java多线程各种同步方法的原理和优缺点 java多线程设计模...

网友评论

    本文标题:JAVA 多线程初探

    本文链接:https://www.haomeiwen.com/subject/lshgnxtx.html