先来科普一下,并发程序的基本概念,大神可以跳过吆~
并发程序概念
并发程序之间通常是相对独立地运行 并发程序的特点:
- 1:制约性:并发程序之间在执行的时候具有相互制约关系,需要进行同步于互斥
- 2:不可再现性:程序执行的结果不再是一个与时间无关的函数,而是一个跟程序执行的相对速度有关,失去了程序的封闭性。
- 3:程序与计算不再一一对应:一个程序对应多个计算,共享的程序处理不同的对象
进程和线程是并发程序的2种基本实现方式
进程与线程
进程:计算机中资源分配和调度的独立单位, 线程:CPU调度的最小单位,线程有用户线程和守护线程2大类。
进程&线程区别:
线程与进程是(n,1)关系,同一个进程可以拥有多个线程,共享进程的资源,共享进程栈,但是每个线程又有自己独立的线程栈。
Java中的进程与线程
每一个运行的Java程序对应一个JVM虚拟机,也对应一个进程,线程作为JVM中最小的调度单位。 Java程序总是从mian()开始执行,main()方法所在的线程成为主线程,通过主线程可以启动多个子线程。
线程优先级
Java线程调度是基于优先级的抢占式调度,优先级范围是1-10 数值越大,优先级越高,默认为5.子线程的优先级默认与其父线程相同, 不过优先级并不能保障线程的执行次序,只不过,优先级高的线程被调度的概率较大。
Java多线程的发展历史
JDK1.0:协作式调度,使用stop/resume/suspend
JDK1.2:改善线程之间的交互,引入wait()/notify()/sleep()
JDK1.4:引入NIO,通过在一个Selector上挂接多个Channel
JDK5.0:发布JSR133(明确“先行发生”内存模型)/166(引入java.util.concurrent包,包括线程池等机制)
JDK6.0:优化锁机制
JDK7.0:完善并发流程控制功能,如fork-join框架
额,看了一下,感觉好复杂,这里只是简要介绍,有机会还是单独分析吧,这里提供一个链接!
上一章: 目录
下一章: 类&包等名词解释