JAVA多线程系列-2-绪论

2016/05/21 Java

先来科普一下,并发程序的基本概念,大神可以跳过吆~

并发程序概念

并发程序之间通常是相对独立地运行 并发程序的特点:

  • 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框架
额,看了一下,感觉好复杂,这里只是简要介绍,有机会还是单独分析吧,这里提供一个链接!

Java多线程发展

上一章: 目录

下一章: 类&包等名词解释

Search

    Post Directory