进程:
进程是操做系统结构的基础,是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
线程:
线程能够理解为是进程中独立运行的子任务数据库
进程与线程的联系与区别:安全
线程安全就是多个线程访问同一个类,无论运行时环境采用何种调度方式或者这些线程如何交替运行,而且在主调代码中不须要任何额外的同步或协同,这个类都能表现出正确的行为,那么就程这个类是线程安全的。多线程
同步和异步是针对方法调用而言的
同步是指方法调用会等待方法返回,方法返回后才能继续往下执行。
异步是指方法调用会当即返回,并继续向下执行,可是异步调用当即返回并不表示这个调用请求处理完成,而是会在后台起一个线程去执行。并发
并发:多个线程抢占同一CPU时间片
并行:不一样的CPU同时执行不一样的线程异步
临界区用来表示一种公共资源。能够被多线程使用,可是一次只能一个线程使用它,一旦临界区被占用,其余线程要想使用临界区资源,则只能进入阻塞等待队列。操作系统
阻塞和非阻塞一般用来形容多线程间的相互影响。
若是一个线程占用了临界区资源,那么其余全部须要这个资源的线程就会在这个临界区的阻塞队列中等待,等待就会致使线程挂起,致使阻塞。若是占用这个临界区资源的线程一直不释放资源,那么全部阻塞在这个临界区的线程都不能进行工做。
而非阻塞是多个线程同时进入临界区。线程
死锁是指两个或者多个线程相互持有对方须要的资源,致使这些线程处于等待状态,没法继续前行
死锁产生的必要条件:队列
避免死锁的几个方式:进程
某些线程于其余线程抢占CPU时间片时,老是没有抢占到CPU时间片,就会使线程处于饥饿状态内存
与死锁相反,活锁是过分的释放CPU资源,都不去抢占资源,致使线程阻塞