1、什么是进程(Process)和线程(Thread)?有何区别?
一、进程(Process):
1.进程是系统进行资源分配和调度的基本单位,进程是进程实体(包括:程序段、数据段、进程控制块PCB)的运行过程。
2、进程拥有系统中的资源,是资源拥有的基本单位。
二、线程(Thread):
1、线程是CPU进行调度和分派的基本单位,线程是进程的实体,线程是比进程更小的独立运行的基本单位。
2、线程基本上不拥有系统资源,只拥有在运行中必不可少的资源(如:程序计数器、一组寄存器和栈),但是一个线程可以与同属一个进程的其他线程共享所拥有的全部资源。
三、线程与进程:
1、 一个线程可以创建和撤销另一个线程,同一个进程的多个线程之间可以并发执行。
2、进程提高了资源的利用率和吞吐量,而线程减少了进程并发执行所需的时间、空间的开销。
四、进程与应用程序:
1、 进程:出于动态条件下正在运行的程序实例,是程序自身的地址空间的一次执行活动。
2、应用程序:一个静态文件存储在计算机系统硬盘等存储空间中,即静态实体,他不能申请、占用系统资源。
2、如何实现多线程:
Java多线程实现方式主要有四种:
1、继承Thread类
2、实现Runnable接口
3、实现Callable接口
4、通过线程池创建线程,使用ExecutorService、Callable、Future实现有返回结果的线程
**************************************************************************
深入了解实现多线程的方法:
1、Thread类本质上是实现类runnable接口,代表一个线程实例
2、如果需要创建线程的类实现类已经继承了另一个类,无法再继承(java中只能单继承)Thread
类,那就可以选择实现Runnable接口,来达到创建线程的目的。
3、实现Callable接口,实际上是通过FutureTask包装器来创建线程的
4、继承Thread和实现Runnable接口,返回值为void没有返回结果,需要重写run()方法
5、实现Callable和通过线程池创建,有返回值,实现Callable要实现call()方法,返回值是Object
一、Windows内存管理的三种方法:
1、虚拟内存:最适合用来管理大型对象或数组结构。
2、内存堆栈:最适合用来管理大量的小对象。
3、内存映射文件:最适合用来管理大型数据流以及在单个计算机上运行多个线程之间的共享数据。
二、Windows内存可分两个层面:
1、物理内存
2、虚拟内存
4、说出你所知道的保持进程同步的方法?(注意不是线程同步)
一、进程之间实现同步的方法有:原子操作、信号量机制、管程、会合、自旋锁、分布式系统等。
二 、进程同步机制遵循的规则:
1、空闲让进
2、忙则等待
3、有限等待
4、让权等待
5、makefile文件的作用是什么?
1、我们知道,一个项目中源文件不计其数,其分别按功能、类型、模块分别放在不同的目录下。
2、而Makefile文件则定义了一系列的规则来指定那些文件需要 先编译、后编译及哪些文件需要重新编译,甚至进行更加复杂的功能操作。
3、Makefile文件实现了“自动化编译”(配合make命令工具使用)----一旦写好,整个项目只需要一个make命令就可以自动完成编译,Makefile就像一个Shell脚本一样。
6、什么是死锁?其条件是什么?怎样避免死锁?
一、死锁:
两个或多个进程被无限制地阻塞,并进行相互等待的状态。即“执行并发计算时,一组进程中的所有线程都在等待其他线程释放资源的现象”。
二 、死锁产生的条件:(缺一不可)
1、互斥条件
2、请求和保持条件
3、不可剥夺条件(不可抢占条件)
4、环形等待条件
三、死锁解除:
理论上来说任意破坏死锁产生条件之一,即可解除死锁。但是一般通过破坏除“互斥条件”外的条件,来实现死锁解除。
四、死锁处理策略:
预防死锁、避免死锁、检测死锁、解除死锁等。