Java语言程序设计
多线程程序设计
多线程程序设计
1
线程概述
2
编写线程程序
3
4
5
线程的生命周期
多线程的同步处理(重点)
多线程的同步问题(难点)
C最新发展
1989年,C语言被 ANSI 标准化(ANSI -1989)
1990年,ISO ANSI ISO
1999年,ISO 9899:1999的发表。它通常被称为C99
2011年12月8日,ISO正式发布了新的C语言的新标准C11,官方名称为ISO/IEC 9899:2011。支持多线程
1969年到1973年之间,为了在PDP-11电脑上运行的UNIX系统所设计出来的编程语言。
1973年,Unix操作系统的核心正式用C语言改写,这是C语言第一次应用在操作系统的核心编写上。
肯·汤普逊和丹尼斯·里奇
C++最新发展
2011-09-11发布
支持多线程是C++语言最大的变化之一。此前,C++只能利用操作系统的功能(Unix族系统使用pthreads库),或是例如OpenMP和MPI这些代码库,来实现多核计算的目标。
C++11语法,建议阅读《Professional C++》,或《C ++ Primer Plus》。C++11多线程主题方面,建议阅读《C++ Concurrency in Action》。
Java最新发展
甲骨文的Java总架构师马克•雷纳德在2011年JavaOne大会上为大家透露了Java 8的新功能,同时也谈到了一些关于Java 9的计划。
Java 8Java 8将从根本上改变编程语言的功能,Java 8包含两个主要项目: Lambda项目中,多核处理器下的Java编程将更高效,Lambda表达式可以帮助开发人员提高效率,更好地利用多核处理器; Jigsaw项目关键是令大块的代码更易于管理,并促进应用和大型运算的代码重用。Jigsaw项目还带来了许多新的表单功能,涉及封装、重构、版本和模块集成。
甲骨文也表示, Java9和10将加入大数据、多语言的互操作性、云计算和移动,预期分别于2015年和2017年发布。
而关于Java开发工具包(JDK)10以及之后的版本也正在讨论中,比如使Java语言面向对象,形成一个统一的类型系统,所有原语都将转换为对象和方法。
一、线程概述
程序是一组指令的有序集合。
进程是一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,比如在Windows 系统中,一个运行的exe 就是一个进程。进程是系统进行资源分配和调度的一个独立单位。
线程(thread)是指进程内部一段可独立执行的、有独立控制流的指令序列,进程中的多个线程共享进程的内存,是CPU调度和分派的基本单位。
一个程序至少有一个进程,一个进程至少有一个线程;进程和程序并不是一一对应的,一个程序执行在不同的数据集上就成为不同的进程。“同时”执行是人的感觉,在线程之间实际上轮换执行。
一、线程概述
一台机器可以同时执行多个程序,一个进程可以通过运行多个线程来并发地执行多项任务。Java虚拟机通过多线程机制来提高程序运行的效率。
基于进程的特点:
允许计算机同时运行两个或更多的程序。
基于线程的多任务处理环境中,线程是最小的处理单位。
每个进程的内部数据和状态都是完全独立的。
一个进程内的多线程是共享一块内存空间和一组系统资源,有可能互相影响。
线程的切换比进程切换的负担要小。
9
线程的调度
调度策略
时间片
抢占式:高优先级的线程抢占CPU
Java的调度方法
同优先级线程组成先进先出先进先出队列,使用时间片策略
对高优先级,使用优先调度的抢占式抢占式策略
1
2
线程的优点
方便调度和通信。与进程相比,多线程是一种非常“节俭”的多任务操作方式。
恰当地使用线程,可以降低开发和维护的开销,并且能够提高复杂应用的性能,改进应用程序响应速度。
改进应用程序响应。这对图形界面的程序尤其有意义,当一个操作耗时很长时,整个系统都会等待这个操作,此时程序不会响应键盘、鼠标、菜单的操作,而使用多线程技术,将耗时长的操作置于一个新的线程,可以避免这种尴尬的情况。
提高系统效率。特别是使多CPU系统更加有效,操作系统会保证当线程数不大于CPU数目时,不同的线程运行于不同的CPU上。
改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运行部分,这样的程序会利于理解和修改。
返回
Java语言程序设计课件 来自淘豆网m.daumloan.com转载请标明出处.