web.xml中的filter java面试题(7)

电脑杂谈  发布时间:2019-03-27 08:09:04  来源:网络整理

三.资源分配不当。

33.如何才能产生死锁

产生死锁的四个必要条件:

一.互斥条件:所谓互斥就是进程在某一时间内独占资源。

二.请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

三.不剥夺条件:进程已获得资源,在末使用完之前,不能强行剥夺。

四.循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

34.死锁的预防

打破产生死锁的四个必要条件中的一个或几个,保证系统不会进入死锁状态。

表 4–1 互斥锁属性例程 操作 相关函数说明 初始化互斥锁属性对象 pthread_mutexattr_init 语法销毁互斥锁属性对象 pthread_mutexattr_destroy 语法 设置互斥锁范围pthread_mutexattr_setpshared 语法 获取互斥锁范围pthread_mutexattr_getpshared 语法 设置互斥锁的类型属性pthread_mutexattr_settype 语法 获取互斥锁的类型属性 pthread_mutexattr_gettype语法 设置互斥锁属性的协议 pthread_mutexattr_setprotocol 语法 获取互斥锁属性的协议pthread_mutexattr_getprotocol 语法 设置互斥锁属性的优先级上限pthread_mutexattr_setprioceiling 语法 获取互斥锁属性的优先级上限pthread_mutexattr_getprioceiling 语法 设置互斥锁的优先级上限pthread_mutex_setprioceiling 语法 获取互斥锁的优先级上限pthread_mutex_getprioceiling 语法 设置互斥锁的强健属性pthread_mutexattr_setrobust_np 语法 获取互斥锁的强健属性pthread_mutexattr_getrobust_np 语法 表 4–2 中显示了在定义互斥范围时 solaris 线程和posix 线程之间的差异。信号量的用法和互斥的用法很相似,不同的是它可以同一时刻允许多个线程访问同一个资源,pv操作。改进:将c处理成临界资源,让p1、p2互斥访问c,一个 进程对于c的一次访问完毕,另一个进程才能访问,就不 会出现这种情况。

二.打破不可抢占条件。即允许进程强行从占有者那里夺取某些资源。就是说,当一个进程已占有了某些资源,它又申请新的资源,但不能立即被满足时,它必须释放所占有的全部资源,以后再重新申请。它所释放的资源可以分配给其它进程。这就相当于该进程占有的资源被隐蔽地强占了。这种预防死锁的方法实现起来困难,会降低系统性能。

三.打破占有且申请条件。可以实行资源预先分配策略。即进程在运行前一次性地向系统申请它所需要的全部资源。如果某个进程所需的全部资源得不到满足,则不分配任何资源,此进程暂不运行。只有当系统能够满足当前进程的全部资源需求时,才一次性地将所申请的资源全部分配给该进程。由于运行的进程已占有了它所需的全部资源,所以不会发生占有资源又申请资源的现象,因此不会发生死锁。

四.打破循环等待条件,实行资源有序分配策略。采用这种策略,即把资源事先分类编号,按号分配,使进程在申请,占用资源时不会形成环路。所有进程对资源的请求必须严格按资源序号递增的顺序提出。进程占用了小号资源,才能申请大号资源,就不会产生环路,从而预防了死锁。

35.什么叫守护线程,用什么方法实现守护线程

参见vip课程

36.Java线程池技术及原理

参见vip课程

37.java并发包concurrent及常用的类


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-93146-7.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...