- 1、本文档共59页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
哈尔滨工业大学计算机系代亚非 第六章Java线程 主讲: 赵 欢 教授 第六章Java线程 线程的基本概念:进程与线程 创建线程的方式: 继承 Thread类 实现 Runnable接口 线程的生命周期 线程的同步与死锁 小结 6.1 线程的基本概念 6.1 线程的基本概念 1 进程 进程是并发执行的程序在一个数据集合上的执行过程。对于多任务的操作系统Windows,我们可以同时打开和运行多哥应用程序。每个独立运行的应用程序即为一个进程,同时运行的多个应用程序则为多进程。 6.1 线程的基本概念 Windows任务管理器中的进程 6.1 线程的基本概念 进程是由进程控制块、程序段、数据段三部分组成。一个进程可以包含若干线程(Thread)。 线程可以帮助应用程序同时做几件事,是可并发执行的程序。 在一个数据集合上的运行过程,是系统进行资源分配和调度的一个独立单位,也是称活动、路径或任务,它有两方面性质:活动性、并发性。 进程可以划分为运行、阻塞、就绪三种状态,并随一定条件而相互转化:就绪--运行,运行--阻塞,阻塞--就绪。 6.1 线程的基本概念 2 线程 线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。 6.1 线程的基本概念 线程和进程的区别: 1)多个进程的内部数据和状态都是完全独立的,而多线程是共享一块内存空间和一组系统资源,有可能互相影响。 2)线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈,所以线程的切换比进程切换的负担要小。 3)对线程的综合支持是Java技术的一个重要特色.它提供了thread类、监视器和条件变量的技术。 4)虽然Macintosh,Windows NT,Windows 9等操作系统支持多线程,但若要用C或C++编写多线程程序是十分困难的,因为它们对数据同步的支持不充分。 6.1 线程的基本概念 进程中多线程同时运行 ,如图: 6.1 线程的基本概念 使用多线程的优势: 1)减轻编写交互频繁、涉及面多的程序的困难. 2)程序的吞吐量会得到改善. 3)由多个处理器的系统,可以并发运行不同的线程.(否则,任何时刻只有一个线程在运行) 6.2 创建线程的方式 Java中实现线程的方式有两种 : ① 继承 Thread类,比如 class MyThread extends Thread { public void run() { // 这里写上线程的内容 } public static void main(String[] args) { // 使用这个方法启动一个线程 new MyThread().start(); } } 6.2 创建线程的方式 ② 实现 Runnable接口 class MyThread implements Runnable{ public void run() { // 这里写上线程的内容 } public static void main(String[] args) { // 使用这个方法启动一个线程 new Thread(new MyThread()).start(); } } 注意:一般鼓励使用第二种方法,应为Java里面只允许单一继承,但允许实现多个接口。第二个方法更加灵活。 6.2 创建线程的方式 6.2.1 Thread类 该类支持许多种方法,得到关于线程的活动、集合的信息,并检查线程的性质,引起线程等待、中断和撤消。 通过扩展Thread类可使应用程序和类在单独的线程中运行。 类Thread在包java.lang中定义,它的构造方法如下: public Thread(); public Thread(Runnable target); public Thread(Runnable target,String name); public Thread(String name); public Thread(ThreadGroup group,Runnable target); public Thread(ThreadGroup group, String name); 6.2 创建线程的方式 主要方法有: isActive() 判断是否处于执行状态 Suspend() 暂停执行 reSume 恢复执行 start() 开始执行 Stop() 停止执行 sleep() 睡眠 r
文档评论(0)