目录
认识线程(Thread)
1 线程是什么?
2 为什么要有线程
3 进程和线程的区别
区别一
区别二
区别三
区别四
4. Java的线程和操作系统线程的关系
认识线程(Thread)
1 线程是什么?
- 一个线程就是一个 "执行流"。
- 每个线程之间都可以按照顺序执行自己的代码. 多个线程之间 "同时" 执行着多份代码。
- 将一个大任务分解成不同小任务,交给不同执行流分别排队执行。
2 为什么要有线程
但是在服务器开发场景上,一般情况下,客户端,服务器都在一台计算机上;但是我们可以把客户端和服务器分别放在两台电脑上。
此时我们可以通过网络的方式,远程访问mysql服务器,这也是以后工作中,最典型的一种场景
在这种服务器的情况下,涉及一个非常关键的问题,一个服务器程序,同一时刻,是需要给多个客户端提供服务的:
客户端按照并发的方式,发送请求到服务器,服务器就要能对这些请求进行处理。怎么处理?
总结:
引入线程,也可以解决并发编程,提高效率,同时节省开销。
但是,线程不是引入越多越好,适量的引用可以提高效率,引入太多,会因为线程调度的开销过大,反而拖慢程序的性能。
多个线程共享同一份资源,可能会产生冲突,导致线程安全问题,甚至进一步的,如果某一个线程抛出异常没有得到及时的处理,可能会带走整个进程。
3 进程和线程的区别
区别一
进程是包含线程的. 每个进程至少有一个线程存在,即主线程。
windows 的任务管理器中,我们无法看到进程内部的线程。需要借助一些其他调试工具(VS的调试器,Windbg.....),才可以看到每个进程中的线程
区别二
进程和进程之间不共享内存空间. 同一个进程的线程之间共享同一个内存空间
区别三
进程是系统分配资源的最小单位,线程是系统调度的最小单位。
为什么不能说线程共享CPU资源呢?
区别四
一个进程挂了一般不会影响到其他进程. 但是一个线程挂了, 可能把同进程内的其他线程一起带走(整个进程崩溃).
4. Java的线程和操作系统线程的关系
线程是操作系统中的概念。操作系统内核实现了线程这样的机制, 并且对用户层提供了一些 API, 供用户使用(例如 Linux 的 pthread 库)
通俗地讲,API就是,Java的开发大佬写了一些类或者函数,我们拿过来直接用即可。如:
Java 标准库中 Thread 类可以视为是对操作系统提供的 API 进行了进一步的抽象和封装.