categories: 多线程
Java 多线程方面的考点
8-1 进程和线程的区别
选择jdk8、jdk11来讲课
进程和线程的由来
批处理过程中,cpu会等待io读取数据,这是批处理劣势
线程让进程的内部并发变成可能。
线程的引入:人们都实时性有了要求。
一个进程在一段时间内只做一件事情,如果一个进程有多个任务,只能逐个地去执行这些子任务,而往往子任务之间的顺序不存在依赖,是可以并发执行的。既然cpu可以按照时间片的方式轮流切换去跑进程,能不能给这些子任务打一个标签,让cpu按照更细的时间片去执行子任务呢?引入了线程,线程共享进程的内存资源。不需要切换页目录等。
进程让系统的并发性变成可能,而线程让进程的内部并发变成可能。
宏观不断细化,从而每个部分进行控制,学习也是,宏观的学习没有具体细节的动手更好。
线程的组成也要记住。
总结
- 线程不能看做独立应用,而进程可看做独立应用
- 进程有独立的地址空间,相互不应先,线程只是进程的不同执行路径
- 线程没有独立的地址空间,多进程的程序比多线程程序更健壮
-
Java进程和线程的关系
- Java对操作系统提供的功能进行封装,包括进程和线程
运行一个程序会产生一个进,进程包含至少一个线程
- 每个进程对应一个JVM实例,多个线程共享JVM里的堆
- Java采用单线程编程模型,程序会自动创建主线程
-
补充知识
一个程序是一个可执行的文件,而一个进程则是一个执行中程序的实例,CurrentThreadDemo 便可以称之为进程。虽然只有一个线程来执行任务,但是并不代表jvm中只有一个线程,jvm在创建实例时,同时会创建很多其他的线程,比如GC等。主要分析的时线程,进程分析为辅。
额外知识
linux的用户态和内核态是如何进行转换的,为什么要进行转换?
- 什么是系统中断?内核态的多线程是如何通过轻量级的线程方式实现的?
- 将其融入到多线程的相关知识中,立马能提升你的档次。