一个CPU同一时刻只能执行一个线程;CPU 经过给每一个线程分配必定的时间片,时间片很是短,一般是几十毫秒,来不停的切换线程执行任务,达到了多线程的效果。当线程用完本身的时间片后,及时任务尚未完成,操做系统也会剥夺它的执行权,让另外一条线程执行。算法
当一条线程的时间片用完后,操做系统会暂停该线程,并保存该线程相应的信息(到程序计数器),而后再随机选择一条新线程去执行,这个过程称为“上下文切换”。因为进行上下文切换时,须要保存当前线程的状态,并加载线程先前的状态,这是有消耗的,所以应该尽可能减小上下文切换的次数。数据库
当一个线程永远地持有一个锁,而且其余线程都尝试得到这个锁,那么它们将被永远阻塞。在线程A持有锁L1并想得到锁L2的同时,线程B持有锁L2并想得到L1,那么这两个线程将永远等待下去,也就是产生了死锁。编程
避免死锁的几个常见方法:多线程
lock.tryLock(timeout)
来替代使用内部锁机制。资源限制是指在进行并发编程时,程序的执行速度受限于计算机的硬件资源或者软件资源,这些计算机资源限制了程序的并发度。并发
线程多了致使线程的上下文切换增多,资源有限,会产生损耗。操作系统
解决资源限制的方法:.net