进程和线程

1. 进程

进程(Process)是计算机程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。

程序是指令、数据及其组织形式的描述,进程是正在运行的程序的实例。

进程是由程序段、数据段和进程控制块三部分组成。

进程间通信方式:管道、消息队列、共享内存、信号量、套接字。

2. 线程

线程(Threads)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。

进程启动时,操作系统会给它分配独立的地址空间,进程间相互独立,互不影响。

线程基本上不拥有系统资源。在运行时,暂用一些程序计数器、寄存器和栈 。多个线程共享进程中的地址空间。

一个程序至少有一个进程,一个进程至少有一个线程。进程中的多个线程并行执行不同的任务。

线程间的通信主要是用于线程同步,方式有临界区、互斥量、信号量、事件。

3. 进程和线程的区别

(1)进程是资源分配的最小单位,线程是程序执行的最小单位。

(2)进程的创建和销毁,系统开销远大于线程。

(3)线程上下文切换速度远高于进程。

 4. 线程状态

(1)新建(New),创建一个线程对象。

(2)就绪(Runnable),线程对象创建后,其它线程调用了该对象的start()方法。就绪状态的线程位于可执行线程池中,等待获取CPU时间片。

(3)运行(Running),就绪状态的线程获取到了CPU时间片,执行程序代码。

(4)阻塞(Blocked),运行状态的线程由于某种原因放弃了CPU资源,临时中止执行。线程阻塞结束,进入就绪状态。

(5)死亡(Dead),线程运行结束或者因异常终止。

阻塞的三种情况:

(1)等待阻塞:运行状态的线程调用wait()方法,JVM会把该线程放入等待池中。

(2)同步阻塞:运行状态的线程在获取对象的同步锁时,该同步锁被别的线程占用,JVM会把该线程放入锁池中。

(3)其它阻塞:运行状态的线程调用sleep()或join()方法,或者发出了I/O请求,JVM会把该线程置为堵塞状态。

5. 线程池

线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池和连接池都是对象复用思想的运用,目的是降低系统开销,提高应用的性能。

 

转载于:https://www.cnblogs.com/yutb/p/11574135.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值