进程和线程

什么是进程?
进程就是应用程序在内存中分配的空间,也就是正在运行的程序,各个进程之间互不干扰,同时进程保留着程序运行时的状态
1.cpu采用时间片轮转方式运行进程:cpu为每个进程分配时间段,如果时间段结束还在运行就会暂停运行,cpu分给另一个进程(这个过程也叫上下文切换)
如果进程在时间片结束前阻塞或结束,则CPU立即进行切换,不用等待时间片用完。
2.使用进程+CPU时间片轮转方式的操作系统,看似执行多个任务,但是对于单核cpu,却是同一时间只有一个任务在占用cpu资源
但是事实上,一个进程有多个子任务时,只能逐个执行子任务,很影响效率
那么能不能让子任务同时执行,于是出现了线程,一个线程执行一个子任务,一个进程包含多个线程,一个线程负责单独的一个子任务

系统为每个进程分配不同的内存空间;而对线程而言,除CPU外,系统不会为线程分配内存,线程所使用的资源来自其所属进程的资源,线程组之间只能共享资源。

什么是线程?
线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。
程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。
比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成该任务只需10毫秒。
1.线程由进程创建的,是进程的一个实体
2.一个进程可以拥有多个线程
3.单线程:同一个时刻,只允许执行一个线程。
4.多线程:同一个时刻,可以执行多个线程,比如:一个qq进程,可以同时打开多个聊天窗口,一个迅雷进程,可以同时下载多个文件

线程和进程有什么区别?
一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用。而线程是在进程中执行的一个任务。

线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。

不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。

每个线程都拥有单独的栈内存用来存储本地数据。

线程的同步机制
1.在多线程编程,一些敏感数据不允许被多个线程同时访问,此时就使用同步访问技术,保证数据在任何同一时刻,最多有一个线程访问,以保证数据的完整性。
2.也可以这里理解:线程同步,即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作,其他线程才能对该内存地址进行操作。

同步具体方法-Synchronized
同步代码块

synchronized(对象){//得到对象的锁,才能操作同步代码
//需要被同步代码
}
//synchronized还可以放在方法声明中,表示整个方法-为同步方法
public synchronized void m (String name){
//需要被同步的代码
}
posted @ 2023-08-23 11:06  杜文鹏  阅读(11)  评论(0编辑  收藏  举报