进程相关

1、什么是进程?

      进程是指系统中正在运行的应用程序,程序一旦运行就是进程;

      进程是系统分配资源的独立实体,且每个进程之间都是相互独立的,一个进程是无法直接访问另一个进程的,除非通过对应的工具或者方式才可以访问;

      一个进程可以由多个线程组成;

2、什么是线程?

      线程是进程的一个实体,是进程的执行路径;

3、进程和线程之间的区别?

     1> 地址空间和其他资源文件:进程之间是相互独立的,但是对于同一个进程中的线程来说是共享的;

     2> 通信:

           进程间:通过管道、信号量、共享内存、消息队列等;

          同一个进程的线程:直接读写;

    3> 调度和切换:线程上下文切换比进程上下文切换块;

    4> 在多线程中,进程不是一个可执行的实体;

4、如何选择进程与线程?

    1> 频繁的销毁与创建则选择线程,因为进程的创建和销毁代价很大;

    2> 线程的切换速度很快,所以需要大量的计算,切换频繁时使用线程,还有就是耗时性的操作使用线程可以提高应用的响应速度;

    3> 对CPU的使用率来说,线程更占优势,多机分布式采用进程,多核分布式使用线程;

    4> 并行操作使用线程,例如C/S架构的服务器端并发线程响应用户的请求;

    5> 追求稳定安全时,选择进程,追求执行速度时选择线程;

5、死锁是什么?

    多个并发进程因争夺系统资源而产生的相互等待的现象;

    例如:a与b同时要进门,但是门一次只能容许一个人进,a等待b让路,b等待a让路,若无外力作用,导致俩人都无法进去;

    死锁的原因:

             1> 系统资源的不足;

             2> 进程的推进不合理;

6、产生死锁的四大必要条件?

     互斥:一个系统资源在同一时间只能有一个进程可以使用; 

     不可抢占条件:一个进程在获得资源且未使用完之前,其他进程不能抢夺,只能等待当前进程使用完成后释放获得;

     占有且申请条件:一个进程在获得一个资源A时候,申请另一个资源B,但是B资源是其他线程持有的,导致当前进程无法执行;

     循环等待条件:俩个或者多个进程的执行需要多个资源,但是所属的资源互相背其他线程占用,导致循环等待持有资源的进程释放资源的情况;

7、如何解决死锁?

     1> 最简单的办法就是不让上述的条件都满足;

           互斥性是无法改变的;

          打破不可抢占条件:当前进程持有部分资源却有申请其他资源,而其他资源被占用时,释放当前进程所持有的资源;

          打破占有且申请条件:不需要在执行前得到全部的资源才执行,得到可以开始执行的资源后就开始执行,执行完响应的资源之后释放,并且执行过程中需要其他资源时在进行申请;

          打破循环等待:资源的有序分配,将资源从小到大排序,进程的申请顺序必须从小到大(及当其占用了小的资源时申请大的资源才会给分配,否则拒绝);

   2> 合理地分配资源;

   3> 使用银行家算法:如果进程申请的资源系统的剩余内存可以满足,则分配;

8、多线程的实现方式?

     (1)继承Thread类;

     (2)实现Runable接口(如果当前类需要继承其他类则可以使用);

     (3)使用匿名内部类(Thread类或者是Runable接口):只执行一次的线程;

     (4)定时器:

     (5)线程池的方式:线程和数据库连接这些资源是很宝贵的;

     (6)通过Spring的注解:通过@Async来定义一个线程任务;

9、线程同步的方式?

        https://www.cnblogs.com/goody9807/p/6522176.html

     (1)同步方法、同步块;

     (2)wait()、notify、sleep;

     (3)voliate关键字;

     (4)ThreadLocal线程本地变量;

     (5)显示索ReentranLock

     (6)使用阻塞的队列;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值