Java基础系列-多线程.ppt

Java基础系列-多线程.ppt

ID:56527616

大小:161.00 KB

页数:47页

时间:2020-06-27

Java基础系列-多线程.ppt_第1页
Java基础系列-多线程.ppt_第2页
Java基础系列-多线程.ppt_第3页
Java基础系列-多线程.ppt_第4页
Java基础系列-多线程.ppt_第5页
资源描述:

《Java基础系列-多线程.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Java基础系列--多线程一、多线程基本概念1、进程和线程:进程:是一个在内存中独立运行的程序,有自己的地址空间,进程切换的开销大。如正在运行的写字板程序就是一个进程。设置一个进程要占用相当一部分处理器时间和内存资源。大多数操作系统不允许进程访问其他进程的内存空间,进程间的通信很不方便,编程模型比较复杂。线程:多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立。线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较

2、进程简单。文件输入输出装置各种系统资源数据区段只有一个地方在执行文件输入输出装置各种系统资源程序区段同时有数个地方在执行传统的进程多线程的任务数据区段程序区段线程执行的机理CPU按分配的时间片,轮流执行各线程,由于每个线程执行时间极短(20ms),等效各线程并行运行。多个线程的执行是并发的,也就是在逻辑上“同时”,而不管是否是物理上的“同时”。如果系统只有一个CPU,那么真正的“同时”是不可能的,但是由于CPU的速度非常快,用户感觉不到其中的区别,因此我们也不用关心它,只需要设想各个线程是同时执行即可。多线程和传统的单线程在程序设计上最大的区别在于,由于各个线程的控制流彼此独

3、立,使得各个线程之间的代码是乱序执行的,由此带来的线程调度,同步等问题2、多线程的优势:提高应用程序的响应:可以对任何一个包含许多相互独立的活动的程序进行重新设计,以便将每个活动定义为一个线程。例如,多线程GUI的用户不必等待一个活动完成即可启动另一个活动。更有效地使用多处理器改进程序结构:许多应用程序都以更有效的方式构造为多个独立或半独立的执行单元,而非整块的单个线程。多线程程序比单线程程序更能适应用户需求的变化。占用较少的系统资源3、多线程的应用:多线程的应用范围很广。但在一般情况下,程序的一些部分同特定的事件或资源联系在一起,同时又不想为它而暂停程序其他部分的执行。这样

4、一来,就可考虑创建一个线程,令其与那个事件或资源关联到一起,并让它独立于主程序运行。一个很好的例子便是GUI界面中的“Quit”或“退出”按钮——我们并不希望在程序的每一部分代码中都轮询这个按钮,同时又希望该按钮能及时地作出响应(使程序看起来似乎经常都在轮询它)。事实上,多线程最主要的一个用途就是构建一个“反应灵敏”的用户界面。4、Java多线程主线程在任何Java程序启动时,一个线程立刻运行(即main方法对应的线程),该线程通常称为程序的主线程。主线程的特点:它是产生其他子线程的线程。它不一定是最后完成执行的线程,子线程可能在它结束之后还在运行。线程体每个线程都是通过某个

5、特定Thread对象所对应的方法run()来完成其操作的,方法run()称为线程体(即线程的可执行代码)二、创建线程Thread类Runnable接口创建线程线程生命期线程的优先级线程组线程同步线程间通信挂起、恢复和终止线程daemon线程2.1Thread类封装了Java程序中一个线程对象需要拥有的属性和方法继承Thread类是Java程序中创建多线程的方法之一从Thread类派生一个子类,并创建这个子类的对象,就可以产生一个新的线程。这个子类应该重写Thread类的run方法,在run方法中写入需要在新线程中执行的语句段。这个子类的对象需要调用start方法来启动,新线程

6、将自动进入run方法。原线程将同时继续往下执行Thread类直接继承了Object类,并实现了Runnable接口。2.1Thread类--构造函数构造函数:publicThread();publicThread(Runnabletarget);publicThread(ThreadGroupgroup,Runnabletarget);publicThread(Stringname);publicThread(ThreadGroupgroup,Stringname);publicThread(Runnabletarget,Stringname);publicThread(Th

7、readGroupgroup,Runnabletarget,Stringname);参数说明:target:一个对象,线程启动后它的run方法会被调用。如果该参数为null,那么thread对象本身的run方法会被调用group:线程组对象name:新线程对象的名字2.1Thread类--常用方法publicvoidstart();//启动该线程,将导致run方法被自动调用。该方法将立即返回,新线程将运行publicvoidrun();//必须覆盖该方法,在方法体中添加你想要在该线程中执行的代码publ

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。