多线程Thread

作者: 紫某某 | 来源:发表于2018-01-16 10:00 被阅读6次

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


undefined_腾讯视频

技能树.IT修真院

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

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

相关文章

  • Thread,Runnable和Callable

    Java多线程实现方式:Thread,Runnable,Callable多线程是乱序执行Thread===1.Th...

  • java 多线程

    多线程: 说到多线程,最先提到的就是Thread和Runnable。实现多线程可以通过继承Thread 或者 实现...

  • linux多线程编程 -- __thread

    linux多线程编程 -- __thread 一. __thread 定义 ​ __thread是GCC内置的...

  • Python 并行编程

    多线程编程 Python 主要提供了包括thread、threading、Queue等多线程编程模块。thread...

  • 线程启动原理

    Java多线程,皆始于Thread。Thread是多线程的根,每一个线程的开启都始于Thread的start()方...

  • 两种建立多线程的方式

    Thread和Runnable实现多线程的区别 Java中实现多线程有两种方法:继承Thread、实现Runnab...

  • Unity3D 多线程

    (一)多线程的创建 Thread A = new Thread(new ThreadStart(Goto));Th...

  • 3-Java中如何创建线程

    Runnable和Thread实现多线程的区别 Java中实现多线程有两种方法:继承Thread类、实现Runna...

  • java线程&和各种奇奇怪怪的锁

    1、Java线程 一、Java多线程常用的两种实现方法 1、 继承Thread类 子类继承Thread类具备多线程...

  • android 多线程 — Thread

    java 的线程类型是 Thread ,所以多线程的学习也是从 Thread 开始的 继承 Thread 类 启动...

网友评论

    本文标题:多线程Thread

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