Thread

分享人:杨以杰

1.背景介绍

2.知识剖析

3.常见问题

4.配置展示

5.扩展思考

6.参考文献

7.更多讨论

1.背景介绍

线程

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

进程

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

2.知识剖析

Java程序运行原理和JVM的启动是多线程的吗?

* Java命令会启动java虚拟机,启动JVM,等于启动了一个应用程序,也就是启动了一个进程。该进程会自动启动一个 “主线程” ,然后主线程去调用某个类的 main 方法。

* JVM启动至少启动了垃圾回收线程和主线程,所以是多线程的。

线程的实现

继承Thread类

实现Runnable接口

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

3.常见问题

* 并行就是两个任务同时运行,就是甲任务进行的同时,乙任务也在进行。(需要多核CPU)

* 并发是指两个任务都请求运行,而处理器只能按受一个任务,就把这两个任务安排轮流进行,由于时间间隔较短,使人感觉两个任务都在运行。

* 比如我跟两个网友聊天,左手操作一个电脑跟甲聊,同时右手用另一台电脑跟乙聊天,这就叫并行。

* 如果用一台电脑我先给甲发个消息,然后立刻再给乙发消息,然后再跟甲聊,再跟乙聊。这就叫并发。

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.更多讨论

分享到此结束

欢迎大家讨论