线程概念及死锁的理解
来源:互联网 发布:谷歌浏览器怎么优化 编辑:程序博客网 时间:2024/05/28 15:07
1.什么是进程(Process)和线程(Thread)?有何区别?
进程是一个程序运行占用内存空间。线程是程序的一代码段。一个或多个线程组成一个进程。进程可以执行多个任务,每个任务都是线程。
2.分段和分页
页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率;或者说,分页仅仅是由于系统管理的需要,而不是用户的需要。
段是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好的满足用户的需要。
页的大小固定且由系统确定,把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的,因而一个系统只能有一种大小的页面。段的长度却不固定,决定于用户所编写的程序,通常由编辑程序在对源程序进行编辑时,根据信息的性质来划分。
分页的作业地址空间是一维的,即单一的线性空间,程序员只须利用一个记忆符,即可表示一地址。分段的作业地址空间是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内地址。
3. **死锁**:
产生死锁的原因:一是系统提供的资源数量有限,不能满足每个进程的使用;二是多道程序运行时,进程推进顺序不合理。
产生死锁的必要条件是:1、互斥条件;2、不可剥夺条件(不可抢占);3、部分分配;4、循环等待。
根据产生死锁的四个必要条件,只要使其中之一不能成立,死锁就不会出现。为此,可以采取下列三种预防措施:
1、采用资源静态分配策略,破坏”部分分配”条件;
2、允许进程剥夺使用其他进程占有的资源,从而破坏”不可剥夺”条件;
3、采用资源有序分配法,破坏”环路”条件。
死锁的避免不严格地限制死锁的必要条件的存在,而是系统在系统运行过程中小心地避免死锁的最终发生。最著名的死锁避免算法是银行家算法。死锁避免算法需要很大的系统开销。
解决死锁的另一条途径是死锁检测方法,这种方法对资源的分配不加限制,即允许死锁的发生。但系统定时地运行一个”死锁检测”程序,判断系统是否已发生死锁,若检测到死锁发生则设法加以解除。
解除死锁常常采用下面两种方法:1、资源剥夺法;2、撤消进程法
4.进程的同步
阻止两个线程对同一共享资源进行并发访问。
对于同步代码块:synchronized(obj){ 此处就是同步代码块 }//obj 是同步监听器 str account等等可能被并发访问的共享资源部
同步方法:public synchronized void draw(double drawAmount)
- 线程概念及死锁的理解
- 线程死锁的理解
- Java线程死锁的概念
- 深入理解Java的线程池概念及核心方法
- 数据库锁及死锁的概念
- 线程的死锁及算法避免
- 线程的同步与死锁及解决办法
- 线程死锁及解决办法
- 线程死锁及解决办法
- JAVA线程之七:线程的生命周期及死锁
- 死锁的相关概念
- 死锁的相关概念
- 对Java线程概念的理解
- 理解进程,线程概念
- 关于“内核线程”、“用户线程”概念的理解
- Java线程死锁及解决方案
- 引起线程死锁的一种情况及解决方法
- JVM的线程状态及如何排查死锁原因
- mysql-5.7.10-winx64解压版安装(亲测)
- 详解Java中的对象克隆
- GitBook的安装与使用
- 【Linux开发】【DSP开发】Linux设备驱动之——PCI 总线
- 江西 学霸宿舍8个考研7个入了“985”
- 线程概念及死锁的理解
- 这样投简历,99%没面试机会!
- Number_Get_Next产生流水号
- 不错博客地址
- 封装JDBC的一个通用增删改查工具类,将数据集rs转为list
- 用实例分析H264 RTP payload(RTSP参数分析)
- Sencha Touch2 -- 11.1:定义具有关联关系的模型
- Android开发请求网络方式详解
- 利用Multipeer Connectivity框架进行WiFi传输