位置:珠海达内IT教育培训学校 > 学校动态 > java多线程面试宝典
进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1–n个线程。(进程是资源分配的小单位)
进程间通信主要包括管道, 系统IPC(包括消息队列,信号,共享存储), 套接字(SOCKET).
管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。(线程是cpu调度的小单位)
线程可以创建另外一个线程
进程有独立的虚拟地址空间
同一进程内的线程共享内存等系统资源
线程间同步的方式主要由以下三种:
互斥量,采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。因为互斥对象只有一个,所以可以增加公共资源不会被多个线程同时访问
信号量(临界区),它允许同一时刻多个线程访问同一资源,但是需要控制同一时刻访问此资源的大线程数量。当需要一个计数器来限制可以使用某共享资源的线程数目时,可以使用“信号量”对象
事件(信号),通过通知操作的方式来保持多线程同步,还可以方便的实现多线程级的比较操作。即事件机制允许一个线程在处理完一个任务后,主动唤醒另外一个线程执行任务
进程间通信的方法:半双工管道,FIFO(命名管道),消息队列,信号量,共享内存,socket
1、多线程有什么用?
(1)发挥多核CPU的优势 资源利用率提升,程序处理效率提高
(2)防止阻塞,单核CPU我们还是要应用多线程,就是为了防止阻塞
(3)便于建模,分别建立程序模型,并通过多线程分别运行这几个任务
尊重原创文章,转载请注明出处与链接:http://www.peixun360.com/1780/news/119468/违者必究! 以上就是珠海达内IT教育培训学校 小编为您整理 java多线程面试宝典的全部内容。