面试题:线程和进程

一、线程和进程的定义

进程:

进程是资源分配的基本单位,程序运行时系统就会创建一个进程,在分配资源后,将进程放入进程就绪队列。

进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。

线程:

线程是程序执行时的最小单位,是CPU调度和分派的基本单位。

一个进程可以由很多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。

线程由CPU独立调度执行,在多CPU环境下就允许多个线程同时运行。同样多线程也可以实现并发操作,每个请求分配一个线程来处理。

二、线程和进程的区别

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

2)进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段。

3)线程是共享进程中的数据的,使用相同的地址空间。

4)线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据(需要处理同步与互斥)。进程之间的通信需要以通信的方式(IPC)进行。

5)多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。

三、多进程间的通信方式

进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。

1)管道( pipe )

普通管道PIPE:分为只能单向传输和只能在父子或者兄弟进程间使用的两种

流管道s_pipe::只能在父子或兄弟进程间使用,可以双向传输.

命名管道name_pipe:可以在许多并不相关的进程之间进行通讯.

2)信号量( semophore ) 

信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源,主要作为进程间以及同一进程内不同线程之间的同步手段。

3)消息队列( message queue ) 

消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。

4)信号 ( sinal ) 

信号用于通知接收进程某个事件已经发生。

4)共享内存( shared memory ) 

共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。

5)套接字( socket ) 

套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。

四、如何实现多线程

1):继承Thread类。

2):实现Runnable接口。

3):实现Callable接口通过FutureTask包装器来创建Thread线程

五、多线程五个状态

新建->就绪->运行->阻塞->死亡

六、多线程通信

1)同步

2)wait、notify

3)队列

4)管道

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值