java线程面试题1
进程与线程的区别
一、每个进程都有独立的代码和数据空间,线程是进程的一部分,可以看做是轻量级进程,属于同一进程的线程可以共享这个进程的代码和数据空间,每个线程都有独立的运行栈和程序计数器(Program Counter);
二、进程间的切换会有较大的开销,线程的切换开销较小;
三、进程是资源分配的单位,线程是调度和执行的单位;
四、一个没有线程的进程可以认为是单线程的,如果一个进程内有多个线程,那么进程的执行过程不是一条线,而是多条线共同执行;
五、在操作系统中同时运行多个程序叫做多进程,在同一应用程序中运行多个线程叫做多线程;
六、系统在运行的时候会为每个进程分配不同的内存区域,不会给线程分配,线程组只能共享资源。除了CPU外,计算机内部软硬件资源分配与线程无关,线程只是共享它所属进程的资源。
进程和线程的通信方式
进程之间通信
一、管道
管道,通常指无名管道,是 UNIX 系统IPC最古老的形式;
二、FIFO
FIFO,也称为命名管道,它是一种文件类型;
三、消息队列
消息队列,是消息的链接表,存放在内核中。一个消息队列由一个标识符(即队列ID)来标