参考了一些资料,加上在慕课网的学习。说一下进程和线程。

那最原始的问题:进程和线程是什么?
1、进程和线程是一个时间段的描述,是CPU工作时间段的描述。
2、进程是资源分配的最小单位,线程是CPU调度的最小单位。
第一条很好理解,第二条刚开始看到我是不理解的,只是先记住了。但是现在理解了,来说一下第二条为什么这么说。
进程是资源分配的最小单位。
进程在内存中占有独立的地址空间,相互不影响。当操作系统将A进程资源唤醒,那么执行A进程。过一会儿唤醒B进程资源,那么执行B进程。所以资源分配的最小单位就是进程。
线程是CPU调度的最小单位。
我看到过一句话,其实CPU是看不到进程的,只能看到线程。因为CPU同一时刻只能运行一个线程,它只能看到的是组成这个进程内部的线程。
之后就开始说进程和线程的区别是什么?
进程有独立的地址空间。线程就是在此空间内的不同执行路径。
进程并发。线程并行(多核计算机)。
进程切换比线程切换开销大。(因为线程共享资源)
多进程比多新城更加健壮。( 线程没有单独的地址空间,一个线程死掉就等于整个进程死掉。而进程之间互不影响)
进程和线程具体在java中的实现呢?
1.Java对操作系统提供的功能进行封装,包括进程和线程
2.运行一个程序就会产生一个进程,进程里至少包括一个线程
3.每个进程对应一个JVM实例,多个线程共享JVM里的堆
4.Java采用单线程编程模型,程序会自动创建主线程(其实就是main方法)
5.主线程可以创建子线程,原则上后于子线程完成执行
网友评论