Java面试题:进程和线程的区别,进程通信,线程通信,多线程和多进程区别

进程和线程的区别

  1. 引入线程的目的:在传统的操作系统中,拥有资源和程序执行的基本单位都是进程,但是为了提高操作系统的并发性能,引入线程作为基本的CPU执行单元。
  2. 进程和线程的关系:一个进程可以由多个线程组成,同一进程的线程可以并发执行,进程拥有独立的地址空间,同一进程的线程可以共享进程的资源,所以同一进程内的线程切换时,时空开销很少。
  3. 资源拥有方面:进程是拥有资源的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,线程可以访问所隶属进程的资源。
  4. 通信方面:线程之间的通信更方便,进程之间的通信需要以进程间通信实现。
  5. 创建销毁方面:创建和撤销一个线程比启动一个进程的开销要小。

进程之间的通信方式

1.共享存储:在通信进程之间存在一块可以直接访问的共享空间,通过对这块共享空间的读写操作,实现进程之间的通信。

2.消息传递:

  • 直接通信方式:利用系统提供的进程消息发送和消息接收功能进行通信。
  • 间接通讯方式:发送进程先把消息发送到某个消息存储设备当中,接收进程从这设备当中消费消息。

3.管道通信:是消息传递的特殊方式,发送进程向管道写入数据,接收进程从管道中读取数据。

4.信号量(PV操作)在系统中创建一个信号量集合(本质是个数组),可以使进程互斥地访问临界资源。

 

线程之间的通信方式(Java线程之间的通信)

1.锁机制

2.使用Object类的wait() 和 notify() 方法

3.使用JUC工具类 CountDownLatch

4.关键字synchronize,volatile

 

多进程与多线程的区别

线程共享所属进程的资源,所以

  • 线程之间的通信比进程之间的通信更有效、更容易。
  • 上下文切换的时空开销也较少。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值