java面试小结(三)线程与进程(面试精简浓缩版)

本文介绍了进程和线程的基本概念,强调了它们之间的区别,包括资源消耗、数据共享和独立性。同时,阐述了线程死锁的概念,列举了产生死锁的四个必要条件,并提出了预防死锁的策略。此外,还提到了用户线程和守护线程的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进程

  • 一个在内存中运行的应用程序,每个进程都有自己的内存空间,如windows的xx.exe

线程

  • 进程中的一个执行任务,负责当前进程的程序的执行

两者区别

  • 进程像火车,线程像车厢,(单纯的车厢不能运行)
  • 一个进程可以有多个线程
  • 不同进程间很难数据共享
  • 同一进程下不同线程很容易数据共享
  • 进程要比线程消耗更多的资源
  • 进程间不会相互影响,线程会,一个线程的挂掉可能会引起整个进程的崩掉
  • 进程间可以扩展到多机,线程最多扩展到多核cpu
  • 进程可以在内存地址上上锁,即一个线程使用某些共享元素时,其他线程必须等他结束,才能使用这一内存(类似火车洗手间)
  • 进程使用的内存可以限定使用量(餐车)

用户线程与守护线程的区别

  • 用户线程:运行在前台,执行具体的任务,如程序的主线程,连接网络的子线程
  • 守护线程:运行在后台,为其他前台线程服务,当所有的用户线程都结束的时候,守护线程也随jvm一起结束工作,如gc线程

什么是线程死锁

  • 当两个或者两个以上的线程同时争抢一个共享资源而造成一种阻塞的现象,若无外力,他们都将无法推进下去

产生死锁的四个必要条件

  • 互斥:一个资源只允许一个线程访问
  • 有且等待
  • 不可抢夺
  • 循环等待

解决避免死锁

  • 资源一次性分配
  • 资源有序分配
  • 可剥夺资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值